Passez des macros au langage de programmation VBA

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). 

Il y a deux fenĂȘtres? Une avec le nom des projets et une avec le code VBA.
Interface du Visual Basic Editor (VBE)

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.

Ever considered an OpenClassrooms diploma?
  • Up to 100% of your training program funded
  • Flexible start date
  • Career-focused projects
  • Individual mentoring
Find the training program and funding option that suits you best