Créer une macro VBA AUTOMATIQUEMENT sur EXCEL avec l’enregistreur [#03 FORMATION EXCEL VBA COMPLETE]
Dans ce nouveau chapitre de la formation VBA d’excelformation.fr, je vais vous montrer comment créer votre première macro VBA pour automatiser la réalisation des tâches les plus répétitives. Et le plus beau, c’est que pour cela nous n’allons même pas avoir besoin de saisir la moindre ligne de programmation. Nous allons en effet découvrir un outil magique d’Excel : l’enregistreur de macro !
Tutoriel Vidéo
Vous pouvez obtenir le fichier d'exemple de cet article et découvrir la méthode d'apprentissage d'Excel pas-à-pas en cliquant sur le lien suivant :
Introduction
Dans ce chapitre, nous allons créer une macro VBA ! Oui vous avez lu, alors que dans les chapitres précédents, nous venons à peine de découvrir à quoi peut bien servir le langage VBA, nous allons maintenant créer une macro, et pas une des moindres, car nous allons créer une application d’enregistrement des entrées et des sorties de personnes dans une entreprise (application de pointage horaires).
1. Recette de cuisine pour créer une feuille de pointage horaires
Pour pouvoir enregistrer la commande qui va permettre à Excel de sauvegarder chaque pointage au sein d’une base de données, nous devons déjà mettre en place un algorithme très simple dans lequel nous allons définir chaque action à réaliser.
Si le mot algorithme peut faire peur, nous pouvons plutôt parler de « recette ». Il s’agit en effet d’écrire chaque étape afin de savoir exactement ce que nous allons demander à la macro de réaliser.
Concrètement, voici ce que nous allons faire :
Nous disposons d’une case (ici en jaune) dans laquelle un utilisateur va saisir son nom.
Nous allons vouloir qu’en cliquant sur un unique bouton, Excel enregistre l’heure, la date, le nom et le sens de son pointage (Arrivée/Départ).
Notre recette de cuisine va donc ressembler à la suivante :
- 1. Sélectionner la ligne 10,
- 2. Effectuer un clic-droit > Insérer
- 3. Sélectionner la cellule A10,
- 4. Saisir la formule =MAINTENANT(),
- 5. Sélectionner la cellule B10,
- 6. Saisir la formule =B6,
- 7. Sélectionner les cellules A10 et B10
- 8. Copier les cellules,
- 9. Clic-droit > Collage spécial > en valeur,
- 10. Sélectionner la cellule C10,
- 11. Saisir : « Arrivée »,
- 12. Sélectionner la ligne 11
- 13. Effectuer un clic-droit > Copier,
- 14. Sélectionner la ligne 10,
- 15. Effectuer un clic-droit > Collage spéciale > Mise en forme > OK,
- 16. Sélectionner la cellule B6,
- 17. Appuyer sur la touche [Suppr]
Et c’est tout !
Quelques commentaires sur cette recette avant de la mettre en application :
- Il n’est pas possible de se placer directement en bas d’une base de données avec l’enregistreur, car à chaque fois que nous sélectionnons une cellule (ou que nous nous déplaçons à l’aide des flèches), Excel enregistre directement la position de la cellule de destination,
- C’est la raison pour laquelle nous insérons directement une nouvelle ligne sous les en-têtes de colonnes (vous comprendrez mieux lorsque plusieurs enregistrements auront été inséré),
- L’inconvénient de cette méthode, c’est qu’au moment de l’insertion, Excel va appliquer un format sur les cellules identiques à celui des cellules situées juste au-dessus, il est donc nécessaire en fin de macro de récupérer le format de la ligne insérée juste en dessous
2. ACTION !
Maintenant que nous savons exactement ce que nous allons devoir faire, il ne reste plus qu’à le mettre en application.
Pour cela, nous commençons par cliquer sur le bouton d’enregistrement, disponible dans le menu Développeur que nous avons activé dans le chapitre précédent (ou le bouton situé en bas, dans la barre d’état d’Excel) :
Nous recliquerons ensuite sur ce même bouton à la fin de l’enregistrement.
N’oubliez pas de saisir un nom de test dans la cellule B6 avant de lancer la recette ! Puis nous pouvons lancer l’enregistrement.
Juste après avoir cliqué sur le bouton, une fenêtre se lance pour demander de saisir un nom pour la macro, appelons la « enregistrerMacro » par exemple.
Nous pouvons affecter directement un raccourci pour lancer la macro et éventuellement choisir de l’insérer dans un autre classeur ouvert ou dans le classeur des macros personnelles.
Enfin, nous pouvons saisir un commentaire qui sera ajouté dans le code source, juste avant la macro.
Laissons toutes les options par défaut (en dehors du nom de la macro), puis nous pouvons lancer pour de bon l’enregistrement en appuyant sur le bouton [OK] :
Attention, à partir de maintenant, toute ce que vous allez faire dans l’application Excel va être enregistré dans la macro !! Il est donc primordial de ne pas commettre d’imper et de réaliser chacune des opérations EXACTEMENT comme le prévoit la recette ! C’est très important de ne pas réaliser d’étape supplémentaire, qui serait immanquablement reproduite dans la macro.
À la fin de l’enregistrement, n’oubliez pas de rappuyer sur le bouton pour stopper la macro.
Normalement vous devriez avoir un résultat semblable à :
Comme vous pouvez le constater, il ne reste qu’un détail à corriger : la cellule B10 fait bien apparaître la date du pointage, mais pas l’heure correspondante. Il suffit pour cela de se rendre dans le formatage de la cellule (sélection de la cellule > Clic-droit > Format de cellule…) :
Puis dans la catégorie Personnalisée, nous saisissons le format de cellule suivant : « jj/mm/aaaa hh:mm », afin d’afficher l’heure du pointage juste après la date :
Nous validons simplement en appuyant sur le bouton [OK] :
3. Lancement de la macro
Il existe de trois méthodes pour lancer la macro que nous venons de créer :
Soit depuis le menu Développeur > Macros
Ce bouton permet de lancer la fenêtre de sélection de macro :
Ici, il suffit de sélectionner la macro que nous venons de créer, puis de cliquer sur le bouton [Exécuter] :
Il est également possible de lancer cette même fenêtre en utilisant le raccourci clavier [Alt]+[F8].
Enfin la troisième méthode, et également la plus pratique consiste à utiliser un bouton pour lancer la macro (ou n’importe quel autre objet).
Pour cela, toujours depuis le menu Développeur, nous choisissons d’insérer un contrôle de formulaire de type bouton :
Puis nous le dessinons sur la feuille de calcul :
De cette manière Excel nous présente une fenêtre pour choisir la macro à affecter à ce bouton :
Il suffit maintenant de changer le texte du bouton, puis de cliquer sur celui-ci pour lancer la macro :
4. Et le départ ?
Maintenant, nous allons créer la macro pour enregistrer le départ.
Et pour gagner quelques secondes, nous allons créer le bouton en même temps !
Nous reprenons ce que nous venons juste de faire, mais en commençant par la fin.
Autrement dit, nous créons un nouveau bouton :
Puis lorsqu’Excel affiche à l’écran la fenêtre d’affectation de la macro, nous saisissons un nom (par exemple « enregistrerDepart »), et au lieu de cliquer sur le bouton [OK], nous choisissons [Enregistrer…] :
Puis nous répétons notre recette de cuisine, en remplaçant simplement le terme « Arrivée » par « Départ » :
Et voilà, il n’y a maintenant plus qu’à laisser opérer la magie !!
Un dernier point avant de se quitter, un classeur qui contient une macro VBA doit être enregistré sous le format *.xlsm, sous peine de perdre la macro que nous venons de produire.