🗂️ Le classeur
Pour manipuler un classeur Excel avec VBA, il est essentiel de savoir lire et écrire des données dans les cellules. Ces opérations sont la base de toute macro.
Récupérer les données d’une cellule spécifique
On peut accéder à la valeur d’une cellule de plusieurs manières. La syntaxe la plus complète est :
Value_A1 = Workbooks("nom_fichier.xlsm").Sheets("nom_feuille").Range("A1").Value
Explications pour débutants :
- Workbooks → le classeur Excel dans lequel se trouve la cellule
- Sheets → la feuille de calcul ciblée dans le classeur
- Range("A1") → la cellule ou la plage de cellules ciblée
- .Value → la valeur contenue dans la cellule
Si le classeur n’est pas précisé, VBA utilisera le classeur actif. Si la feuille n’est pas précisée, VBA utilisera la feuille active.
Utiliser Cells pour identifier une cellule par ligne et colonne
Au lieu de "Range", on peut utiliser "Cells", qui est parfois plus pratique pour les boucles :
Value_A2 = Cells(2, 1).Value 'Cells([n°ligne], [n°colonne])
Ici, Cells(2,1) correspond à la cellule A2 : ligne 2, colonne 1.
Attributs des objets Range et Cells
Les objets Range et Cells ont des propriétés qui permettent de récupérer non seulement la valeur, mais aussi d’autres informations utiles :
Propriétés de Range
a = Range("A1").Value 'Valeur (ou tableau si plusieurs cellules)
b = Range("A1").Formula 'Formule en notation anglaise (ex: "=SUM($A$2:$A$10)")
c = Range("A1").FormulaLocal 'Formule en français (ex: "=SOMME($A$2:$A$10)")
d = Range("A1").Left 'Position horizontale par rapport à la feuille (pixels)
e = Range("A1").Top 'Position verticale (pixels)
f = Range("A1").MergeCells 'True si la cellule est fusionnée
g = Range("A1").Name 'Nom complet de la cellule ("=Feuil1!$A$1")
Propriétés de Cells
a = Cells(1, 1).Value 'Valeur de la cellule
b = Cells(1, 1).Formula 'Formule anglaise
c = Cells(1, 1).FormulaLocal 'Formule française
d = Cells(1, 1).Left 'Position horizontale (pixels)
e = Cells(1, 1).Top 'Position verticale (pixels)
f = Cells(1, 1).MergeCells 'True si la cellule est fusionnée
g = Cells(1, 1).Name 'Nom complet ("=Feuil1!$A$1")
h = Cells(1, 1).Address 'Adresse de la cellule ("$A$1")
Lire et écrire des valeurs
Pour lire une cellule, on affecte sa valeur à une variable :
variable = Cells(1, 1).Value 'Récupère la valeur de la cellule A1
Pour écrire dans une cellule, on affecte la variable à la cellule :
Cells(1, 1).Value = variable 'Écrit la valeur de la variable dans A1
Résumé
- Range : pratique pour les cellules individuelles ou les plages avec des références classiques ("A1:B10").
- Cells : pratique pour les boucles et lorsqu'on utilise des numéros de lignes et colonnes.