Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Macros et langage VBA
  3. Manipuler les cellules Excel
Extrait - Macros et langage VBA  Découvrez la programmation sous Excel (2e édition)
Extraits du livre
Macros et langage VBA Découvrez la programmation sous Excel (2e édition)
6 avis
Revenir à la page d'achat du livre

Manipuler les cellules Excel

Objectifs du chapitre

Objet élémentaire d’Excel, les cellules seront votre première étape sur la programmation VBA des objets Excel.

Sans parcourir l’intégralité des actions possibles avec les cellules en VBA, ce chapitre vous permettra de connaître les principales propriétés et méthodes des objets élémentaires que sont les cellules et plages de cellules sous Excel.

Vous verrez ensuite des exemples de codes les plus fréquents avant de terminer en validant vos nouveaux acquis au travers d’exercices.

Objet et variable Range

Lorsque vous avez créé votre première macro avec l’Enregistreur de macros dans le chapitre L’enregistreur de macros, vous avez déjà fait la connaissance de l’objet Range.

Objet Range

Le type de données Range est le premier que vous découvrez dans la trousse à objets de VBA Excel.

Cet objet représente aussi bien une cellule seule, une plage de cellules ou encore une série de cellules non contiguës. Lorsque vous utilisez cet objet, la syntaxe générale est la suivante :

Range(Adresse) 

Exemple 1 : syntaxe générale de l’objet Range

Selon vos besoins, l’adresse passée sous forme de chaîne de caractères peut représenter la ou les cellules que vous souhaitez manipuler :

Range("A1") 
Range("C2:D5") 
Range("A1,B2,G3") 
Range("CelluleNommee") 

Exemple 2 : possibilité de syntaxe pour l’objet Range

Variable de type Range

Tout comme vous l’avez fait pour des chaînes de caractères, des valeurs numériques ou des booléens, il est possible de travailler avec l’objet Range au travers d’une variable. Ce paragraphe vous indique comment déclarer, affecter et manipuler ensuite cet objet.

Déclaration

La déclaration d’une variable de type Range est similaire...

Objet Cells

Il existe un objet plus petit encore que l’objet Range, qui permet lui aussi de manipuler les cellules ; il s’agit de l’objet Cells. Il est plus petit car là où l’objet Range permet de gérer une plage de cellules, l’objet Cells se limite à une seule cellule. Il n’est par exemple ainsi pas possible de faire référence à la plage de cellules A1:D3 avec un objet Cells.

Pour utiliser l’objet Cells, il existe deux syntaxes possibles, chacune fournissant à l’objet Cells une ligne et une colonne, coordonnées de la cellule.

'Syntaxe générale 
Cells(indiceLigne, indiceColonne) 
'Syntaxe avec des valeurs numériques uniquement 
Debug.Print Cells(3,4) 'affiche le contenu de la cellule D3 
'Syntaxe avec une valeur numérique pour la ligne et une chaîne de 
caractères pour la colonne 
Debug.Print Cells(5, "F") 'affiche le contenu la cellule F5 

Exemple 5 : différentes syntaxes avec l’objet Cells

L’objet Cells est utilisable avec une variable de type Range.

Dim o As Range 
Set o = Cells(1,3) 

Exemple 6 : utilisation d’une variable de type Range pour l’objet Cells

Les types de données Range et Cells partageront des propriétés et méthodes communes. 

Quelques cellules particulières : ActiveCell, Selection et Target

Lorsque vous utilisez l’Enregistreur de macros également, certains mots-clés spécifiques peuvent apparaître pour définir une cellule ou une plage de cellules. Cette courte section a pour objectif de vous en expliquer les grandes lignes.

Cellule active : ActiveCell

Lorsque vous cliquez sur une cellule, on dit que vous l’activez. Cette cellule active est représentée par un objet natif en VBA : ActiveCell. Cet objet, de type Range, représente la cellule active dans votre classeur.

Ci-dessous un exemple de cellule active :

images/13SOB03N.png

Lorsque vous sélectionnez une plage de cellules, la cellule à partir de laquelle vous effectuez votre sélection est la cellule active.

images/13SOB04N.png

Enfin, si vous effectuez une série de sélections de cellules non adjacentes, la dernière cellule activée est la cellule active.

images/13SOB05N.png

Vous pouvez voir le mot-clé ActiveCell dans l’exemple suivant :

Sub RemplirCellule() 
   ActiveCell.FormulaR1C1 = "Bonjour" 
End Sub 

Exemple 7 : apparition du mot-clé ActiveCell depuis l’Enregistreur de macros.

Sélection active : Selection

Quand vous travaillez dans Excel et que vous sélectionnez une ou plusieurs cellules, VBA utilise un objet spécifique : Selection. Cet objet, de type...

Les propriétés des cellules

Dans un premier temps, nous verrons ce qu’on appelle une propriété puis nous verrons les principales propriétés qui peuvent servir avec les cellules.

Définition d’une propriété

En informatique, les propriétés d’un objet sont ses caractéristiques, ce qui le définit. Prenons exemple d’une voiture, vous aurez parmi ses propriétés sa marque, son modèle, sa couleur, son année de sortie. Les propriétés peuvent être de tout type, (numérique, date, chaîne de caractères). Certaines propriétés seront modifiables, d’autres seulement lisibles.

En cours de programmation, vous pouvez reconnaître une propriété à l’icône de doigt pointé :

images/13SOB06N.png

Le contenu d’une cellule : Value, Value2

Lorsque vous commencez à programmer avec Excel, la première chose qui vous intéresse avec une cellule sera la valeur qu’elle contient. Dans ce paragraphe, vous retrouverez une partie des lignes de code que vous avez découvertes avec l’Enregistreur de macros.

La valeur contenue dans une cellule est obtenue grâce à la propriété Value. VBA considère d’ailleurs cette propriété comme celle par défaut.

La syntaxe générale est la suivante :

Debug.Print Range("A1").Value 'Affiche la valeur contenue dans la cellule A1. 

Exemple 10 : syntaxe générale de la propriété Value d’un objet Range

Cette propriété peut aussi bien être lue que modifiée par votre programme.

Range("A1").Value = 3 'Affecte la valeur 3 dans la cellule A1 
MsgBox Range("A1").Value 'Affiche la valeur de la cellule A1 

Exemple 11 : usage de la propriété Value

Selon le type de valeur contenue dans la cellule, le type de donnée retourné par la propriété Value sera automatiquement adapté par VBA. Il conviendra donc d’utiliser les bons types de données pour vos variables, au risque d’avoir une mauvaise interprétation des valeurs par votre programme.

Dans le cas de figure où vous avez les données suivantes dans les cellules :

images/13SOB07N.png

Le code suivant permettra de récupérer chacune des valeurs avec le bon type de donnée :

Dim iNumerique As Integer, sTexte As String, dtDate As Date 
iNumerique = Range("A1").Value '123 
sTexte = Range("B1").Value '"exemple de texte" 
dtDate = Range("C1").Value '2021-08-17 

Exemple 12 : récupération des valeurs au travers de la propriété Value

De la même façon, il est possible d’écrire des valeurs dans les cellules à partir des variables :

Dim strTexte As String 
strTexte = "Bonjour" 
Range("A1").Value = strTexte 

Exemple 13 : affectation de valeur à une cellule par la propriété Value

Il existe une autre propriété, Value2, plus rarement utilisée mais que vous pourrez rencontrer dans les macros d’autres développeurs ;...

Les méthodes appliquées aux cellules

Dans cette section, vous allez aborder l’autre pan de ce qui peut être effectué avec une cellule. Vous y verrez ce qu’est une méthode en programmation, puis vous découvrirez quelques méthodes permettant d’effectuer des manipulations courantes avec les cellules Excel.

Définition d’une méthode

Tout comme vous aviez abordé les propriétés des objets, les méthodes correspondent à des actions que vous pouvez effectuer avec ces objets. Si vous reprenez l’exemple de la voiture, vous pouvez par exemple la déverrouiller, vous assoir au volant, démarrer le moteur, accélérer ou ralentir.

En programmation VBA, les méthodes sont identifiées avec l’icône de bloc jaune suivante :

images/13SOB09N.png

Activer et sélectionner une cellule

Comme vous avez pu l’apprendre dans la section Quelques cellules particulières : ActiveCell, Selection et Target, il existe une distinction entre une cellule active et une cellule sélectionnée. Parmi les méthodes de l’objet, vous commencerez donc par celles qui activent et sélectionnent les cellules.

Activer une cellule : Activate

Une des premières méthodes que vous pouvez voir avec une cellule est son activation. Vous pouvez ainsi simuler le clic sur une cellule. La méthode Activate permet d’effectuer cette action. Cette méthode ne nécessite aucun paramètre ; il est possible d’activer plusieurs cellules, simplement en le précisant à l’intérieur de l’objet Range. Sa syntaxe est la suivante.

Range("A1").Activate 

Exemple 27 : syntaxe de la méthode Activate

Une fois la cellule active, vous pouvez la manipuler...

Exercices

 Dans cette série d’exercices, créez une feuille dans votre classeur que vous nommerez Exercices_ManipulationsCellules.

Avant l’exécution des macros, veillez à ce que la feuille Exercices_ManipulationsCellules soit active.

Les fonctions, procédures et macros pourront être rédigées directement dans la feuille Exercices_ManipulationsCellules.

Vous pouvez vous aider de l’Enregistreur de macros si vous rencontrez des difficultés.

Valeur dans une cellule

Avec activation

 Créez une macro ActiverCelluleA1PuisBonjourDansCelluleActive.

Cette macro activera la cellule A1 puis mettra dans la cellule active la valeur Bonjour.

 Exécutez la macro ActiverCelluleA1PuisBonjourDansCelluleActive.

Sans activation

 Créez une macro EcrireDansCelluleA2.

Cette macro écrira directement dans la cellule A2 la valeur Manipulation OK, sans activer au préalable la cellule A2.

 Exécutez la macro EcrireDansCelluleA2.

Un peu de couleurs

 Créez une macro ColorierCelluleEnJaune.

Cette macro demandera à l’utilisateur de rentrer une adresse de cellule (vous ferez en sorte que l’adresse soit valide).

Une fois l’adresse de la cellule connue, vous la colorierez en jaune (constante vbYellow).

 Exécutez la macro ColorierCelluleEnJaune.

Copier-coller des cellules

Avec la méthode Copy...