Les macros Excel
- MON
- 2024-2025
- temps 1
- vert
- Excel
- VBA
- Titouan Corne
Ce MON est consacré à la prise en main des macros Excel et du langage VBA
Avoir un Microsoft Excel qui fonctionne.
Table des matières
- Introduction
- Les macros et VBA, qu'est-ce que c'est ?
- Quelques points clés en VBA
- Mise en pratique avec la création d'un jeu
1. Introduction
Dans le monde professionnel, l'un des logiciels les plus importants est Excel. Bien que tout le monde connaisse ce logiciel, au moins de nom, seulement une petite partie d'entre eux maîtrisent toutes les fonctionnalités disponibles. Pour ma part, je n'ai jamais vraiment appris à utiliser Excel ; je sais simplement manipuler un tableur et afficher des graphiques. C'est pour cela que j'ai décidé de consacrer ce MON à l'apprentissage des bases des macros qui permettent d'automatiser des tâches. Lors de mon stage de césure, mon collègue de bureau m'a souvent dit : "Excel c'est trop fort, tu peux tout faire avec !".
2. Les macros et VBA, qu'est-ce que c'est ?
Le VBA (Visual Basic for Applications) est un langage proche du VB (Visual Basic). Ce langage de programmation est intégré dans plusieurs applications Microsoft dont Excel. Il permet d'automatiser des tâches par l'intermédiaire de macros qui exécutent des séries d'actions. Par exemple, il est possible d'automatiser la création d'un graphique à partir de données fournies dans un tableur. Ainsi, VBA permet aux utilisateurs de créer des fonctions personnalisées pour répondre à des besoins spécifiques, au-delà des fonctionnalités de base d'Excel.
3. Quelques points clés en VBA
Pour apprendre comment écrire du code en VBA, j'ai utilisé le MON1.1 de Charles et j'ai suivi le même cours que lui (Excel-Pratique : cours VBA gratuit). Ce cours est bien fait, facile à suivre, avec des petits exercices d'entraînement. Je te conseille d'y jeter un coup d'œil si tu souhaites toi aussi apprendre le VBA.
Pour ne pas refaire ce qui a déjà été fait par certains concernant leur MON, je vais simplement mentionner certains 'points clés' qui sont intéressants à voir car on ne retrouve pas exactement la même fonctionnalité ou syntaxe dans d'autres langages de programmation (python, C#, etc).
Structure conditionnelle : on note la présence de Then
et la fin de la structure conditionnelle à l'aide du End If
.
If [CONDITION 1] Then '=> SI la condition 1 est vraie ALORS
'Instructions 1
ElseIf [CONDITION 2] Then '=> SINON, SI la condition 2 est vraie ALORS
'Instructions 2
Else '=> SINON
'Instructions 3
End If
On remarque qu'on utilise la simple appostrophe pour commenter son code.
Boucles While
et Until
:
Do While [CONDITION]
'Instructions
Loop
Do Until [CONDITION]
'Instructions
Loop
Dim cellule As Range
For Each cellule In Range("A1:B3")
cellule = cellule.Address
Next
On remarque qu'on utilise des variables (cellule dans l'exemple précédent) qui doivent être déclarées en précisant leur type (Integer, String, ...).
Exemple : Dim maVariable As Integer
Utilisation de With
pour éviter les répétitions :
With Sheets("Index") 'On cache les différents boutons
.Shapes("BoutonChargerGrille").Visible = False
.Shapes("BoutonCreerGrille").Visible = False
.Shapes("BoutonJouer").Visible = False
.Shapes("BoutonStop").Visible = True
End With
Dans l'exemple précédent, l'utilisation de With
permet d'éviter la répétition de Sheets("Index")
.
Mise en pratique avec la création d'un jeu
Pour apprendre et maîtriser un nouveau langage, il est primordiale de mettre en pratique. C'est pour cela que j'ai décidé de réaliser un petit jeu de Tier-List sur Excel à l'aide des connaissances acquises sur Excel-Pratique.
Concept du jeu
Le jeu de Tier-List consiste à classer des éléments appartenant à un même thème dans différentes catégories selon ses préférences. Par exemple, si le thème choisi est 'clubs de ligue 1', le joueur devra classer 8 clubs selon ses préférences. Les clubs sont tirés au hasard (8 parmi 18 en ce qui concerne le thème 'club de ligue 1'). Le joueur pourra choisir le nom des différentes catégories. Des catégories par défaut seront proposées (catégories : 'Incroyable', 'Super', 'Bien', 'Moyen', 'Incroyablement mauvais').
Organisation du projet : les différentes feuilles Excel
Capture d'écran personnelle (2024)
Feuille n°1 : Index : Correspond à la feuille principale, c'est là que le jeu se déroule.
Feuille n°2 : CreationGrille : Feuilles consacrée au désign de la grille présente sur la feuille Index. Le joueur peut changer le nom de chaque catégorie et sa couleur associée. Sur cette feuille, trois boutons sont disponibles :
- "Effacer la grille actuelle" pour que le joueur crée ses propres catégories de A à Z.
- "Réinitialiser la grille par défaut" pour recharger la grille qui est actuellement affichée sur la capture d'écran qui suit.
- "Retour à la page principale" pour être redirigé vers la feuille Index et commencer à jouer.
Capture d'écran personnelle (2024)
Chaque bouton est associé à une macro, c'est-à-dire à une fonction.
Pour le bouton "Effacer la grille actuelle", voici le code VBA de la macro associée :
Sub Retour()
Sheets("Index").Activate
End Sub
Pour le bouton "Réinitialiser la grille par défaut", voici le code VBA de la macro associée :
Sub GrilleDefaut()
Sheets("CreationGrille").Cells.Clear 'On nettoie la page dédiée à la création d'une grille
Sheets("CreationGrille").Activate 'Choix de la feuille à modifier
Range("A1") = "Nom des catégories pour la tier list" 'Nom des catégories
Range("A2") = "Incroyable"
Range("A3") = "Super"
Range("A4") = "Bien"
Range("A5") = "Moyen"
Range("A6") = "Incroyablement mauvais"
Range("B1") = "Couleur associée" 'Couleur des catégories
Range("B2").Interior.ColorIndex = 4
Range("B3").Interior.ColorIndex = 41
Range("B4").Interior.ColorIndex = 6
Range("B5").Interior.ColorIndex = 45
Range("B6").Interior.ColorIndex = 3
StyleColonne 'Ajouter un style aux colonnes (la fonction StyleColonne a été générée toute seule grâce à l'enregistrement d'une macro)
End Sub
Pour le bouton "Effacer la grille actuelle", voici le code VBA de la macro associée :
Sub NouvelleGrille()
Sheets("CreationGrille").Cells.Clear 'On nettoie la page dédiée à la création d'une grille
Sheets("CreationGrille").Activate 'Choix de la feuille à modifier
Range("A1") = "Nom des catégories pour la tier list" 'Nom des catégories
Range("B1") = "Couleur associée" 'Couleur des catégories
StyleColonne 'Ajouter un style aux colonnes (la fonction StyleColonne a été générée toute seule grâce à l'enregistrement d'une macro)
End Sub
Il existe une fonctionnalité permettant d'enregistrer directement une macro sans écrire le moindre code VBA, simplement en faisant les modifications voulues à la main.
Feuille n°3 : Themes : Feuille qui regroupe tous les thèmes de jeu (ex : clubs de ligue 1, sodas, etc).
Capture d'écran personnelle (2024)
Voici une session, sous forme de vidéo, d'une partie du jeu codé :
Vidéo personnelle (2024)