• Jimmy Nascimento

Faire un calcul somme avec VBA

Mis à jour : 21 juin 2019

Il existe deux méthodes assez populaires permettant de pouvoir réaliser cette tâche :


La méthode des boucles


Elle consiste à sélectionner les cellules nécessaires pour le calcul de cette somme, puis additionner les valeurs qui y correspondent .

On peut aussi utiliser des conditions (If...Then...Else End If) pour choisir si la cellule doit être incluse dans la somme.

Le principe de la somme consiste à déterminer une variable qui va contenir les sommes intermédiaires. Dans le code ci-dessous, on l'appelle MaSomme.

Soit 0 la valeur de ce code (MaSomme = 0) à chaque cellule parcourue dans la boucle, on ajoute la nouvelle valeur à la somme existante (exemple: MaSomme = MaSomme + UneCellule.Valeur )


DEMONSTRATION :



Le code qui additionne les cellules au choix dans une colonne déterminée:



Cette méthode vous permet de changer dynamiquement les plages à additionner : vous pouvez faire une boucle sur les lignes, (comme dans l'exemple) que vous imbriquez dans une boucle sur colonnes.


La méthode WorksheetFunction


La deuxième WorksheetFunction, fonction empruntée d'Excel, elle se comporte exactement de la même manière. 

Elle consiste à définir la plage à additionner (exemple : Set MaPlage = Range("A1:A5") ) puis à l’introduire dans la fonction Somme d'Excel (MaSomme = Application.WorksheetFunction.Sum(MaPlage) ).

Attention, VBA est exclusivement anglophone donc vous n'utilisez pas "somme", mais bien "sum"!  Le code MaSomme = Application.WorksheetFunction.Somme(MaPlage) ne fonctionnera donc pas!

DEMONSTRATION :

Pour commencer, la plus simple : somme des cellules A2:A600 :



L'exemple suivant montre qu'il est possible de faire la somme des plages non contiguës, se trouvant sur la même feuille. Tout dépend de la définition de la plage à additionner (ici Range("A2:A600, B6:B7")) :



Et voici le 3ème exemple, montrant que l'on peut additionner même les plages se trouvant sur des feuilles différentes. Vous devez ajouter le nom de la feuille à la définition de la plage (exemple : Set Plage_3 = Sheets("Feuil2").Range("F2:F600")).

Attention (!), si vous ne définissez pas la feuille explicitement, ce sont les plages de la feuille ACTIVE qui seront additionnées.



5,901 vues

MYPE - prononcer "Maïp" -

signifie : Make Your Process Easier

  • Facebook - Gris Cercle
  • Twitter - Gris Cercle
  • LinkedIn - Gris Cercle
  • YouTube - Gris Cercle

Retrouvez notre brochure :