Comment faire la moyenne des valeurs dans Excel via VBA ?

Dans Excel, vous pouvez utiliser VBA pour calculer les valeurs moyennes à partir d’une plage de cellules ou de plusieurs plages. Et, dans ce tutoriel, nous allons apprendre les différentes façons de l’utiliser.

Moyenne en VBA en utilisant WorksheetFunction

Dans VBA, il existe plusieurs fonctions que vous pouvez utiliser, mais il n’y a pas de fonction spécifique à cette fin. Cela ne signifie pas que nous ne pouvons pas faire une moyenne. Dans VBA, il existe une propriété appelée WorksheetFunction qui peut vous aider à appeler des fonctions dans un code VBA.

moyenne en vba en utilisant la fonction de feuille de calcul

Faisons la moyenne des valeurs de la plage A1: A10.

  1. Entrez d’abord la propriété de la fonction de feuille de calcul, puis sélectionnez la fonction MOYENNE dans la liste.
    worksheet-function-average
  2. Ensuite, vous devez entrer une parenthèse de départ comme vous le faites lors de la saisie d’une fonction dans la feuille de calcul.
    enter-starting-paranthesis
  3. Après cela, nous devons utiliser l’objet range pour faire référence à la plage pour laquelle nous voulons calculer la moyenne.
    use-the-range-object
  4. À la fin, tapez une parenthèse fermante et affectez la valeur de retour de la fonction à la cellule B1.
    type-close-pranthesis
Application.WorksheetFunction.Average(Range("A1:A10"))

Maintenant, lorsque vous exécutez ce code , il calcule la moyenne des valeurs que vous avez dans la plage A1: A10 et entre la valeur dans la cellule B1.

exécuter-le-code-calcule-la-moyenne

Valeurs moyennes d’une colonne entière ou d’une ligne

Dans ce cas, il vous suffit de spécifier une ligne ou une colonne au lieu de la plage que nous avons utilisée dans l’exemple précédent.

'for the entire column A
Range("B1") = Application.WorksheetFunction.Average(Range("A:A"))

'for entire row 1
Range("B1") = Application.WorksheetFunction.Average(Range("1:1"))

Utiliser VBA pour faire la moyenne des valeurs de la sélection

Supposons maintenant que vous souhaitiez calculer la valeur moyenne des cellules sélectionnées uniquement dans la mesure où vous pouvez utiliser un code comme celui-ci.

Sub vba_average_selection()

Dim sRange As Range
Dim iAverage As Long

On Error GoTo errorHandler

Set sRange = Selection

iAverage = WorksheetFunction.Average(Range(sRange.Address))
MsgBox iAverage

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Dans le code ci-dessus, nous avons utilisé la sélection, puis l’avons spécifiée dans la variable « sRange », puis nous avons utilisé l’adresse de cette variable de plage pour obtenir la moyenne.

Moyenne VBA toutes les cellules ci-dessus

Le code suivant prend toutes les cellules du dessus et leurs valeurs moyennes et entre le résultat dans la cellule sélectionnée .

Sub vba_auto_Average()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.End(xlUp).End(xlUp).Address
iLast = Selection.End(xlUp).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Average(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Moyenne d’une plage dynamique à l’aide de VBA

Et de la même manière, vous pouvez utiliser une plage dynamique tout en utilisant VBA pour faire la moyenne des valeurs.

Sub vba_dynamic_range_average()

Dim iFirst As String
Dim iLast As String
Dim iRange As Range

On Error GoTo errorHandler

iFirst = Selection.Offset(1, 1).Address
iLast = Selection.Offset(5, 5).Address

Set iRange = Range(iFirst & ":" & iLast)
ActiveCell = WorksheetFunction.Average(iRange)

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Faire la moyenne d’une colonne dynamique ou d’une ligne

De la même manière, si vous souhaitez utiliser une colonne dynamique, vous pouvez utiliser le code suivant qui prendra la colonne de la cellule active et la moyenne de toutes les valeurs que vous y avez.

Sub vba_dynamic_column()

Dim iCol As Long

On Error GoTo errorHandler

iCol = ActiveCell.Column
MsgBox WorksheetFunction.Average(Columns(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Et pour une rangée.

Sub vba_dynamic_row()

Dim iRow As Long

On Error GoTo errorHandler

iRow = ActiveCell.Row

MsgBox WorksheetFunction.Average(Rows(iCol))

Exit Sub

errorHandler:
MsgBox "make sure to select a valid range of cells"

End Sub

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *