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 :
Lorsque vous sélectionnez une plage de cellules, la cellule à partir de laquelle vous effectuez votre sélection est la cellule active.
Enfin, si vous effectuez une série de sélections de cellules non adjacentes, la dernière cellule activée est la cellule active.
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é :
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 :...
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 :
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....
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.