
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.
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. |
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.Â
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
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 :
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.