Excel · VBA · A3iformations

Manipuler les cellules en VBA : ActiveCell, Value, Address, Offset, Select, Copy, Cut, PasteSpecial et Merge

Une fois une cellule désignée (voir les sélections : Range, Cells, Rows, Columns), il faut agir dessus : lire ou écrire sa valeur, connaître son adresse, se déplacer vers ses voisines, la copier, la déplacer ou la fusionner. Chaque séquence propose une mini-feuille Excel pilotée par du vrai code VBA. Choisissez un exemple ou modifiez le code, puis exécutez-le d’un coup (F5) ou ligne par ligne (F8). Vous pouvez aussi cliquer dans la grille (Maj + clic pour étendre la sélection) : la cellule active est encadrée en vert, la zone copiée en pointillés bleus.

ActiveCell, SelectOù suis-je ?
Value, Text, FormulaLire, écrire
Address, OffsetSe repérer
Copy, Cut, PasteSpecial, MergeTransformer
1

ActiveCell : la cellule active

ActiveCell désigne la cellule active, celle où se trouve le curseur et dont l’adresse apparaît dans la Zone Nom. Une sélection peut contenir plusieurs cellules (Selection), mais il n’y a toujours qu’une seule cellule active. ActiveCell est un objet Range : on lui applique les mêmes propriétés (.Value, .Address, .Row, .Column) et méthodes qu’à n’importe quelle cellule.

Simulateur : la cellule active et la sélection
Macro « contextuelle »ActiveCell est idéale pour une macro qui agit là où l’utilisateur a cliqué : insérer la date, mettre en forme une ligne.
Dépendance au curseurUne macro qui écrit dans ActiveCell écrit n’importe où si l’utilisateur a cliqué ailleurs. Pour une cellule précise, utilisez Range ou Cells.
2

Value : lire et écrire le contenu

.Value est la propriété la plus utilisée : elle lit ou modifie le contenu d’une cellule (Range("C2").Value = 350). C’est la propriété par défaut : Range("C2") = 350 fonctionne aussi, mais écrire .Value rend le code plus clair. À distinguer de .Text, le texte affiché avec son format, et de .Formula, la formule écrite dans la cellule.

Simulateur : Value, Text et Formula
PropriétéRenvoieExemple pour C2 (350,00 €)
.ValueLa valeur stockée (nombre, texte, date)350
.TextLe texte affiché, avec le format (lecture seule)« 350,00 € »
.FormulaLa formule en anglais, ou la valeur s’il n’y en a pas« 350 » ; pour E2 : « =C2*D2 »
Vider une celluleRange("C2").ClearContents efface le contenu en gardant la mise en forme ; .Clear efface tout.
Formules en anglais.Formula attend =SUM(, =IF(… Pour écrire en français, utilisez .FormulaLocal = "=SOMME(E2:E6)".
3

Address : l’adresse d’une cellule

.Address renvoie l’adresse d’une cellule ou d’une plage sous forme de texte, par défaut en références absolues : $C$4. Ses arguments règlent le format : RowAbsolute et ColumnAbsolute (.Address(False, False) donne C4), ReferenceStyle:=xlR1C1 pour le style L1C1, External:=True pour ajouter le classeur et la feuille. Address sert à afficher un message, à mémoriser une position ou à construire une formule.

Simulateur : sélectionnez une plage, comparez les adresses
Row et ColumnPour un numéro, utilisez .Row et .Column plutôt que de découper le texte de Address.
Comparer deux cellulesIf ActiveCell.Address = "$E$8" Then : la comparaison se fait sur le texte, avec les $.
4

Offset : se déplacer à partir d’une cellule

.Offset(lignes, colonnes) renvoie la cellule située à un certain décalage : Range("A1").Offset(2, 1) est B3. Les valeurs positives vont vers le bas et la droite, les négatives vers le haut et la gauche, 0 ne décale pas. Combiné à ActiveCell, Offset permet de lire les voisines d’une cellule (ActiveCell.Offset(0, 2) : deux colonnes à droite) ou de parcourir un tableau ligne par ligne.

Simulateur : Offset et la cellule active
Offset ne sélectionne pasActiveCell.Offset(1, 0) désigne la cellule du dessous ; seul .Select déplace le curseur.
Ajouter une ligneRange("A1").End(xlDown).Offset(1, 0) : la première cellule vide sous le tableau, pour un nouvel enregistrement.
5

Select : sélectionner

.Select sélectionne une plage, exactement comme un clic : elle devient Selection et sa première cellule devient ActiveCell. L’enregistreur de macros en produit beaucoup (Range("B2").Select puis Selection.Font.Bold = True). Dans un code écrit à la main, on agit le plus souvent directement sur la plage, sans la sélectionner : le code est plus court, plus rapide et ne dépend pas de la feuille affichée.

Simulateur : sélectionner une cellule, une plage, une ligne, une colonne
Feuille activeWorksheets("Archive").Range("A1").Select provoque l’erreur 1004 si la feuille Archive n’est pas active : activez-la d’abord, ou évitez Select.
Nettoyer l’enregistreurRemplacez chaque paire X.Select / Selection.Y par X.Y.
6

Méthodes : Copy, Cut, PasteSpecial, Merge et UnMerge

.Copy copie une plage et .Cut la coupe. Avec l’argument Destination, le collage se fait dans la même instruction : Range("C2:C6").Copy Destination:=Range("G2"). Sans destination, la plage part dans le Presse-papiers (pointillés) ; on la colle ensuite avec ActiveSheet.Paste ou, après Copy uniquement, avec .PasteSpecial pour ne coller que les valeurs, les formats ou transposer. .Merge fusionne une plage en une seule cellule, .UnMerge la défusionne.

Simulateur : copier, couper, coller, fusionner
Argument Paste de PasteSpecialColleÉquivalent Excel
xlPasteAllTout (valeurs, formules, formats)Collage normal
xlPasteValuesLes valeurs, sans formule ni formatCollage spécial › Valeurs
xlPasteFormulasLes formules, sans formatCollage spécial › Formules
xlPasteFormatsLa mise en forme seuleCollage spécial › Formats
xlPasteValuesAndNumberFormatsLes valeurs et les formats de nombreValeurs et formats des nombres
Transpose:=TrueInverse lignes et colonnesCase Transposé
Effacer les pointillésAprès un collage, Application.CutCopyMode = False vide le Presse-papiers et supprime la bordure clignotante.
Fusion et triLes cellules fusionnées bloquent le tri, le filtre et la copie de colonnes. Pour un titre, préférez HorizontalAlignment = xlCenterAcrossSelection (Centrer sur plusieurs colonnes).
Copier des valeurs sans Presse-papiersRange("G2:G6").Value = Range("E2:E6").Value recopie les valeurs d’une plage de même taille, sans Copy ni PasteSpecial.
Exercice : calculer, archiver, mettre en forme et déplacer

Classeur d’exercice (Énoncé et Corrigé)

  1. Enregistrez le classeur en .xlsm et collez le code de la feuille « Code VBA » dans un module standard.
  2. Feuille Sessions : cliquez sur une cellule et exécutez Infos (ActiveCell, Address, Value).
  3. Exécutez AjouterTTC (Offset), Archiver (Copy, PasteSpecial), Titre (Merge) puis Deplacer (Cut).
  4. Répondez aux questions de la feuille Contrôle.
A3iformations · Organisme certifié Qualiopi · Centre de passage TOSA Interface Excel Microsoft 365 en français