Aller au contenu
Power Query, DAX & automatisation

VBA (Sub / Range / Cells)

VBA est le langage de programmation d'Excel, édité avec Alt+F11. Une procédure Sub enchaîne des instructions sur des cellules (Range, Cells) pour automatiser un traitement récurrent.

  • VBA
  • Sub
  • Range
  • Cells
  • Option Explicit
  • MsgBox

Syntaxe

Modèle
Option ExplicitSub NomMacro()    Dim variable As Type    Range("A1").Value = ...    Cells(ligne, colonne).Value = ...End Sub

Exemple

Exemple concret
Option ExplicitSub SignalerGrosMontants()    Dim derniere As Long, i As Long, nb As Long    derniere = Cells(Rows.Count, "C").End(xlUp).Row    For i = 2 To derniere        If Cells(i, 3).Value > 1000 Then            Cells(i, 3).Interior.Color = vbYellow            nb = nb + 1        End If    Next i    MsgBox nb & " montants supérieurs à 1 000 € signalés"End Sub' → les montants de la colonne C au-delà de 1 000 passent en jaune, puis un message donne leur nombre

À retenir

  1. En VBA, les arguments se séparent par des virgules, quelle que soit la langue d'Excel : Cells(ligne, colonne), Range("A1", "C10"). Le point-virgule ne sert qu'aux formules de feuille d'un Excel français.
  2. Placez Option Explicit en tête de module et déclarez chaque variable avec Dim (Dim i As Long) : une faute de frappe dans un nom devient une erreur signalée au lieu d'une variable vide. Outils > Options > Déclaration des variables obligatoire l'ajoute automatiquement.
  3. Piège : Range("A1") vise la feuille active au moment de l'exécution. Qualifiez la feuille, par exemple ThisWorkbook.Worksheets("Ventes").Range("A1"), pour ne pas écrire dans le mauvais onglet.
  4. Une formule écrite par VBA avec .Formula utilise la syntaxe anglaise ("=SUM(A1:A10)") ; .FormulaLocal accepte la syntaxe française ("=SOMME(A1:A10)").
  5. Une apostrophe (') commente la fin de la ligne ; F8 exécute le code pas à pas pour le déboguer.

Voir aussi