Comment utiliser SUM dans Excel via VBA ?

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

Somme en VBA à l’aide de 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 somme. Dans VBA, il existe une propriété appelée WorksheetFunction qui peut vous aider à appeler des fonctions dans un code VBA.

somme-en-vba-utilisant-feuille de calcul

Soit la somme 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 SOMME dans la liste.
    enter-worksheet-function
  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.
    starting-parenthesis
  3. Après cela, nous devons utiliser l’ objet range pour faire référence à la plage pour laquelle nous voulons calculer la somme.
    use-the-range-object
  4. À la fin, tapez une parenthèse fermante et affectez la valeur de retour de la fonction à la cellule B1.
    closing-parenthesis
Range("B1") = Application.WorksheetFunction.Sum(Range("A1:A10"))

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

exécuter le code pour calculer

Somme des valeurs d’une colonne entière ou d’une ligne

Dans ce cas, il 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.Sum(Range("A:A"))

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

Utiliser VBA pour additionner les valeurs de la sélection

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

Sub vba_sum_selection()

Dim sRange As Range
Dim iSum As Long

On Error GoTo errorHandler

Set sRange = Selection

iSum = WorksheetFunction.Sum(Range(sRange.Address))
MsgBox iSum

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 somme.

Somme VBA de toutes les cellules ci-dessus

Le code suivant en extrait toutes les cellules et les valeurs de somme et entre le résultat dans la cellule sélectionnée.

Sub vba_auto_sum()

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.Sum(iRange)

Exit Sub

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

End Sub

Additionner 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 additionner des valeurs.

Sub vba_dynamic_range_sum()

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.Sum(iRange)

Exit Sub

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

End Sub

Additionner une colonne dynamique ou 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 additionnera toutes les valeurs que vous y avez.

Sub vba_dynamic_column()

Dim iCol As Long

On Error GoTo errorHandler

iCol = ActiveCell.Column
MsgBox WorksheetFunction.Sum(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.Sum(Rows(iCol))

Exit Sub

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

End Sub

Utiliser SUMIF avec VBA

Tout comme sum, vous pouvez utiliser la fonction SUMIF pour additionner des valeurs avec des critères comme dans l’exemple suivant.

sumif-avec-vba
Sub vba_sumif()

Dim cRange As Range
Dim sRange As Range

Set cRange = Range("A2:A13")
Set sRange = Range("B2:B13")

Range("C2") = _
WorksheetFunction.SumIf(cRange, "Product B", sRange)

End Sub

Ajouter un commentaire

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