Les macros Excel vous font gagner un temps précieux en automatisant vos processus répétitifs. Cependant, l'enregistreur de macros est limité et sujet aux erreurs. VBA (Visual Basic for Applications) offre une puissance bien supérieure.
Avec VBA, vous contrôlez précisément les actions d'Excel et accédez à des fonctions avancées. Si vous utilisez Excel quotidiennement, maîtriser VBA est indispensable. Commençons par les bases.
VBA (Visual Basic for Applications) est un langage de programmation intégré aux applications Microsoft, dont Excel. Visual Basic a été abandonné en 2008, mais VBA reste pleinement supporté et performant.
Conçu pour les non-programmeurs, VBA est intuitif. L'éditeur propose des suggestions contextuelles, complétions automatiques et une aide intégrée pour coder rapidement.
Cela dit, une période d'adaptation est nécessaire.
Pourquoi passer à VBA malgré sa courbe d'apprentissage ? Pour sa puissance inégalée.
Au lieu d'enregistrer des clics, VBA exploite l'ensemble des fonctions Excel. Une fois maîtrisé, il est plus rapide et précis : vous indiquez exactement quoi faire, sans ambiguïté.
Les macros VBA s'enregistrent et se partagent facilement, idéal pour les équipes.
Voici un exemple concret.
Notre feuille contient les noms d'employés, numéros de magasins et ventes trimestrielles.

Cette macro additionne les ventes par magasin et écrit les totaux en F2:F5. (Pour ouvrir l'éditeur VBA : Alt+F11).
Sub StoreSales()
Dim Sum1 As Currency, Sum2 As Currency, Sum3 As Currency, Sum4 As Currency
Dim Cell As Range
For Each Cell In Range("C2:C51")
If IsEmpty(Cell) Then Exit For
If Cell.Offset(0, -1).Value = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf Cell.Offset(0, -1).Value = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf Cell.Offset(0, -1).Value = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf Cell.Offset(0, -1).Value = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell
Range("F2").Value = Sum1
Range("F3").Value = Sum2
Range("F4").Value = Sum3
Range("F5").Value = Sum4
End SubComplexe au premier regard ? Décomposons-la.
"Sub StoreSales()" définit la macro. Les Subs exécutent des actions sans retour de valeur (contrairement aux Functions). Fermez par "End Sub".
"Dim" déclare une variable, suivie de son type (ex. : Currency pour les montants monétaires). Ex. : "Dim Sum1 As Currency".
Consultez la documentation Microsoft pour tous les types.
Les boucles sont essentielles en programmation. Ici :
For Each Cell In Range("C2:C51")
[actions]
Next CellParcourt chaque cellule de C2:C51. "If IsEmpty(Cell) Then Exit For" arrête si vide.
Note : Une boucle Do While conviendrait, mais For Each illustre bien le concept.
Cœur de la macro :
If Cell.Offset(0, -1).Value = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf Cell.Offset(0, -1).Value = 2 Then
Sum2 = Sum2 + Cell.Value
' etc.
End If"Cell.Offset(0, -1)" cible la cellule gauche (numéro de magasin). Ajoute la valeur selon le magasin.
Enfin :
Range("F2").Value = Sum1
' etc.Assigne les totaux aux cellules.
Exécutez via l'onglet Développeur > Macros :

La macro paraît complexe, mais sa logique est claire une fois décomposée. La pratique forge la maîtrise de la syntaxe.
Recherchez sur Google ou consultez la référence officielle Microsoft VBA. Avancez vers l'envoi d'emails, intégration Outlook ou infos système.