Vous venez de faire votre première macro dans Excel. Durant tout le processus de création de cette macro, nous n’avons jamais parlé de VBA. Pourtant cette macro, c’est bien du code VBA qui est exécuté par Excel.
Ah oui c’est vrai, mais où est le code VBA dans une macro ?
De base, Excel ne montre pas le code VBA qui est généré. En effet, pour une utilisation simple comme notre exemple plus haut, vous n’avez pas besoin d’avoir accès au code VBA. Cependant, pour commencer à comprendre le VBA, votre macro simple va être parfaite.
Découvrez l’éditeur VBA
Pour voir le code VBA qu’Excel a généré lors de votre enregistrement :
retournez dans l’onglet “Affichage” d’Excel ;
cliquez sur “Macros” ;
cette fois, au lieu d’exécuter la macro, cliquez sur “Modifier”.
Cette nouvelle fenêtre qui vient de s’ouvrir, c’est le Visual Basic Editor (nous utiliserons VBE à partir de maintenant).
Que voit-on dans le VBE ?
Une nouvelle interface avec 2 fenêtres :
à gauche, la fenêtre des projets (nous y reviendrons plus tard) ;
à droite c’est votre code VBA.
Voici le code que nous avons écrit avec une explication pour chaque ligne :
Sub Mise_a_Jour() | Le mot clé Sub permet de déclarer le début d’une fonction (d’un programme). Ici le programme s’appelle Mise_a_Jour. |
Mise_a_Jour Macro | Cette ligne est en vert avec une apostrophe, c’est donc un commentaire qui ne sera pas lu. |
Range("B2").Select | Range avec (“B2”).select permet de sélectionner la cellule B2 dans Excel. |
ActiveCell.FormulaR1C1 = "Bonjour" | ActiveCell.FormulaR1C1 permet d’écrire dans une cellule, donc notre cas d'écrire le mot “Bonjour” dans la cellule sélectionnée plus haut. |
Range("B2").Select | Range avec (“B2”).select permet de sélectionner la cellule B2 dans Excel. |
With Selection.Font | Le mot With permet d’exécuter une série d'instructions. Dans notre cas, d’utiliser l’objet “font” sur la cellule sélectionnée. |
.ThemeColor = xlThemeColorAccent5 | On utilise la propriété Color et on lui affecte une couleur. Ici le paramètre xlThemeColorAccent5 correspond à du bleu dans ma version d’Excel. |
.TintAndShade = 0 | La propriété TintAndShade permet d’utiliser des dégradés de la couleur. |
End With | Les mots-clés End et With permettent de fermer la série d'instructions. |
Selection.Font.Underline = xlUnderlineStyleSingle | selection.Font.Underline permet d’appliquer un soulignage de la cellule. xlUnderlineStyleSingle permet de souligner la cellule avec un seul trait. |
End Sub | End Sub permet de mettre fin au programme. |
Maîtrisez les concepts de base du langage VBA
Comme vous avez pu le voir dans le détail du code ci-dessus, nous avons parlé d’objet pour le “font”.
Pour moi, un objet c’est quelque chose de matériel, pourquoi on en parle dans de la programmation ?
Faisons une pause ici pour expliquer un peu plus en détail le concept d’objet. Il est important de comprendre que le VBA est une programmation qu’on appelle programmation orientée objet (POO). Tout comme le Python, le Java, le C++ ou encore le PHP (avec quelques nuances pour le VBA).
Mais qu’est-ce qu’un objet, en programmation ?
Si on prend notre exemple, font est donc un objet. Cet objet a plusieurs caractéristiques, comme par exemple :
la couleur ;
si c’est en gras ;
si c’est en italique ;
le nom de la police ;
la taille ;
le soulignement ;
etc.
Pour faire simple, un objet, c’est un ensemble de caractéristiques encapsulées dans un objet.
On peut faire le parallèle avec une recette de cuisine.
Notre recette de cuisine, c’est un peu comme notre application Excel.
En effet, pour faire notre “objet” recette de cuisine, nous avons besoin d’autres d’objets comme l’objet robot et l’objet four. Pour l’objet four, nous allons utiliser la méthode “Chauffer” avec les paramètres chaleur tournante, 180° et 40 minutes. Notre objet four contient également des événements, comme une minuterie qui permet au déclenchement d'arrêter le four.
Si nous résumons, notre objet four contient :
des caractéristiques (type de cuisson, température ou encore temps de cuisson) ;
des méthodes (chauffer, griller, etc.) ;
des événements (arrêt du four, etc.).
Et tout comme nos objets dans Excel, l’objet four ne s’utilise pas que pour cette recette, on peut utiliser cet objet dans plusieurs autres recettes.
C’est exactement pareil dans Excel, certains objets sont utilisés sur des graphiques, des cellules ou des zones de texte ; pourtant c’est exactement le même objet à chaque fois, mais à des endroits différents, qui s'utilise de la même façon.
Voici les principaux objets pour Excel :
Workbook ;
Sheets ;
Range ;
Windows ;
Chart.
Je vous ai dit qu’un objet contient des caractéristiques ou d’autres objets. Si je veux être plus juste, un objet peut contenir plus d’informations.
Ainsi un objet peut contenir :
un autre objet ;
des caractéristiques ;
des méthodes ;
des événements.
Si nous devions résumer :
une caractéristique est une propriété de notre objet :
(police : Times, couleur : bleu, gras : non, etc.) ;
une méthode est un verbe, une action que nous allons faire :
si on reprend l’exemple de notre texte, les différentes méthodes peuvent être remplacer, ajouter, trier, couper, coller, etc. Ce sont des actions que nous allons faire sur une cellule (avec l’objet range) ;
un événement est une action qui va se produire quand une condition va être remplie :
par exemple l'événement “newsheet” de l’objet “application” permet de déclencher le lancement d’un sous-programme à chaque fois qu’on ajoute une feuille.
Effectuez vos premières manipulations en VBA
Maintenant que vous avez vu en détail le concept d’objet, vous allez pouvoir faire des modifications sur votre objet font.
Imaginons par exemple que vous ne souhaitiez plus écrire votre texte en bleu mais plutôt en rouge. Vous avez vu que l’objet font contient une méthode Color. La valeur de Color est xlThemeColorAccent5 pour du bleu. Si vous voulez avoir un texte orange, vous n’avez qu’à écrire ‘xlThemeColorAccent2’ et le texte sera écrit en orange à l'exécution de votre macro. Ici, pas la peine de refaire l’enregistrement de votre macro.
Voici le résultat du code :
Range("B2").Select
ActiveCell.FormulaR1C1 = "Bonjour"
Range("B2").Select
With Selection.Font
.ThemeColor = xlThemeColorAccent2
.TintAndShade = 0
End With
Selection.Font.Underline = xlUnderlineStyleSingle
À vous de jouer !
Votre manager a adoré votre nouvelle macro. Il gagne du temps tous les matins avec votre code. Par contre en l’utilisant, il souhaite faire quelques modifications (il ne va pas l’avouer, mais il a certainement mal décrit la séquence au départ).
Il vous demande donc les modifications suivantes, il veut :
2 chiffres après la virgule ;
la couleur est trop claire, il faut la foncer un peu ;
changer le nom de la colonne en “Chiffre d’affaires” ;
passer la colonne “Chiffre d’affaires” en gras ;
ajouter un raccourci clavier à la macro CTRL + SHIFT + L .
Vous pouvez maintenant faire les modifications qu’il a demandées en modifiant directement le code de notre macro.
Voici le résultat :
En résumé
Le VBA, le Python ou encore le C sont tous des langages de programmation orientée objet.
L’enregistreur de macro traduit des actions en code VBA.
Un objet en VBA peut contenir un autre objet, des caractéristiques, des méthodes ou des événements.
Nous avons vu ensemble comment modifier une macro. Nous allons voir dans le prochain chapitre comment ajouter des commentaires pour documenter le code, et comment sauvegarder nos scripts pour ne jamais les perdre.