Bob a besoin d’utiliser la fonction SOMME dans une macro afin de trouver la somme de toutes les valeurs d’une colonne. Le problème est que le nombre de cellules à additionner variera; pour une exécution de la macro, il pourrait être de 100 cellules, tandis que pour la suivante, il pourrait être de 300 et pour le troisième seulement 25.

Tout d’abord, il est facile d’utiliser la plupart des fonctions de feuille de calcul (telles que SOMME) à partir d’une macro. Tout ce que vous avez à faire est de faire précéder le nom de la fonction de «Application.WorksheetFunction». ou simplement «WorksheetFunction». Ainsi, si vous savez que chaque exécution de la macro nécessitera la sommation de A1: A100, puis A1: A300 et enfin A1: A25, vous pouvez utiliser une macro comme celle-ci:

Public Sub Sum_Demo()

Dim myRange     Dim Results     Dim Run As Long

For Run = 1 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End Sub

Cette macro utilise un For. . . Boucle suivante pour spécifier différentes plages de cellules à additionner. Il utilise ensuite la fonction de feuille de calcul SOMME pour affecter la somme à la variable Results, qui est (enfin) remplie dans une cellule de la colonne B.Les résultats de la première exécution sont placés dans B1, le second dans B2 et le troisième dans B3 .

Bien que cette macro particulière ne soit peut-être pas très utile, elle montre plusieurs techniques utiles, telles que la définition d’une plage nommée, l’utilisation de la fonction SOMME et la façon de remplir la somme dans une cellule. Ce que la macro ne fait pas, c’est montrer comment sélectionner un nombre variable de cellules à additionner. Pour ce faire, il est préférable de s’appuyer sur la méthode End de l’objet Range. La ligne de code suivante montre comment vous pouvez remplir la somme de la plage commençant à A1 et s’étendant juste avant la première cellule vide de la colonne:

myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))

Range("B1") = WorksheetFunction.Sum(myRange)

Notez qu’une plage (myRange) est définie comme commençant par A1 et s’étendant à tout ce que la méthode End renvoie. Ceci est ensuite additionné et inséré dans B1.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (9180) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:

link: / excel-Using_SUM_In_a_Macro [Utilisation de SUM dans une macro].