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.
Soit la somme des valeurs de la plage A1: A10.
- Entrez d’abord la propriété de la fonction de feuille de calcul, puis sélectionnez la fonction SOMME dans la liste.
- 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.
- Après cela, nous devons utiliser l’ objet range pour faire référence à la plage pour laquelle nous voulons calculer la somme.
- À la fin, tapez une parenthèse fermante et affectez la valeur de retour de la fonction à la cellule B1.
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.
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.
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