Faire un calcul somme avec VBA

4 juin 2019

Il existe deux méthodes assez populaires sur Excel VBA permettant de réaliser une somme.

1.La méthode des boucles

Elle consiste à sélectionner les cellules nécessaires pour le calcul de cette somme et d'additionner les valeurs correspondantes.

Il est également possible d'utiliser des conditions (If...Then...Else End If) afin de choisir si notre cellule doit être incluse dans la somme.

Le principe de la somme consiste à déterminer une variable contenant les sommes intermédiaires.

Dans notre 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 imbriquerez dans une boucle sur colonnes.

 

2. La méthode WorksheetFunction

La seconde méthode se nomme WorksheetFunction. Cette dernière est une fonction empruntée d'Excel et 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, le langage VBA est exclusivement anglophone donc veillez à bien utiliser "sum" à la place de "somme".

En effet, le code MaSomme = Application.WorksheetFunction.Somme(MaPlage) ne fonctionnera pas !

 

DEMONSTRATION :

Pour commencer, effectuons par exemple un somme allant des cellules A2 à A600 :

L'exemple suivant montre qu'il est possible de faire la somme des plages non adjacentes et se trouvant sur la même feuille.

Tout dépend de la définition de la plage à additionner (ici Range("A2:A600, B6:B7")):

Notre 3ème exemple montre que l'on peut additionner les plages se trouvant sur des feuilles différentes.

En effet, pour ce faire, vous devez ajouter le nom de la feuille à la définition de la plage (exemple : Set Plage_3 = Sheets("Feuil2").Range("F2:F600")).

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

 

Merci d'avoir suivi ce tutoriel et à très bientôt sur le site de MYPE !

Nous proposons également des formations Power BI et Excel VBA.

Articles en relation

envelopephone-handset linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram