Comment Enregistrer une Macro
L’enregistrement d’une macro dans Excel vous permet de regrouper plusieurs actions en une seule, ce qui est pratique si vous vous retrouvez à effectuer souvent certaines séquences d’actions. Avec une macro, vous pouvez automatiser des tâches mineures courantes, ou des flux de travail entiers.
Bien que l’enregistrement d’une macro soit facile à réaliser, quelques connaissances supplémentaires sur le fonctionnement de l’enregistrement et quelques « meilleures pratiques » peuvent vous aider à maîtriser rapidement les macros et à augmenter votre productivité.
Enregistrer une Macro
Pour commencer à enregistrer une macro, cliquez sur le bouton « Enregistrer une macro » en bas à gauche de la fenêtre Excel. La boîte de dialogue « Enregistrer une macro » s’affiche alors.
Dans la boîte de dialogue « Enregistrement de la macro », entrez ce qui suit :
- Nom de la macro: saisissez un nom unique pour votre macro (afin de pouvoir l’identifier ultérieurement)
- Touche de raccourci (facultatif) : permet de définir un raccourci clavier pour exécuter la macro ultérieurement. Tapez un seul caractère pour attribuer ce raccourci clavier (pour de meilleurs résultats, utilisez la touche MAJ lorsque vous tapez le caractère pour éviter les conflits avec d’autres raccourcis Excel)
- Enregistrer la macro dans: Cette option définit le classeur dans lequel la macro sera stockée, ce qui affecte la manière dont vous pouvez l’utiliser
- « Ce classeur » (option la plus courante) signifie que la macro ne sera utilisable que dans le classeur actif
- L’option « Classeur de macro personnelles » rend la macro utilisable à tout moment dans n’importe quel classeur, en la stockant dans un classeur caché qu’Excel garde toujours ouvert lorsque l’application est utilisée.
- « Nouveau classeur » (le moins courant) stocke les macros dans un tout nouveau classeur ; utile si vous créez des macros que vous ne pouvez pas enregistrer dans « Ce classeur » pour une raison quelconque (par exemple, « Ce classeur » est un fichier .xlsx partagé, vous ne pouvez pas l’enregistrer en .xlsm, et le classeur de macros personnelles ne convient pas à la macro)
Cliquez sur « OK » pour lancer l’enregistrement, puis effectuez les actions que vous souhaitez enregistrer. Lorsque vous avez terminé, cliquez à nouveau sur le bouton « Enregistrer la macro » pour arrêter l’enregistrement (l’icône du bouton s’est transformée en un indicateur carré « Arrêt »)
Modifier une Macro
Après avoir enregistré une macro, vous voudrez peut-être afficher le code pour la modifier. Vous pouvez accéder au code à partir de la boîte de dialogue « Macros » en suivant les étapes suivantes :
- Sélectionnez l’onglet Affichage et cliquez sur le bouton « Macros » (ou cliquez sur la liste déroulante et sélectionnez « Afficher les macros »)
- Dans la boîte de dialogue Macros, sélectionnez la macro que vous souhaitez visualiser et cliquez sur « Modifier »
L’éditeur VBA apparaît alors, avec le curseur sur la première ligne de votre macro. À partir de là, vous pouvez modifier le code pour le clarifier, ajouter de la logique ou supprimer le code inutile.
Pour plus d’informations sur la modification des macros, consultez l’article Afficher et modifier les macros.
Exécution d’une macro
Vous voudrez évidemment exécuter votre macro à un moment donné. La façon générale d’exécuter une macro est d’utiliser la boîte de dialogue « Macros » :
- Ouvrez la boîte de dialogue des macros en suivant la procédure d’édition d’une macro (voir ci-dessus)
- Dans la boîte de dialogue Macros, sélectionnez la macro et cliquez sur « Exécuter »
Une meilleure façon d’exécuter une macro est de l’affecter à un bouton de commande.
Pour ce faire, vous devez d’abord ajouter l’onglet Développeur au ruban. Commencez par cliquer sur Fichier > Options dans la liste située sur le bord gauche
Dans la boîte de dialogue Options, sélectionnez Personnaliser le ruban > Personnaliser le ruban > Onglets principaux, cochez la case « Développeur » et cliquez sur OK.
Lorsque l’onglet Développeur est activé, vous pouvez ajouter un bouton à votre feuille de calcul comme ceci :
- Sélectionnez l’onglet Développeur
- Cliquez sur le menu déroulant « Insérer » et sélectionnez le contrôle de bouton sous Contrôles de formulaire
- Ensuite, déplacez la souris n’importe où sur la surface de la feuille de calcul, puis maintenez le clic gauche et faites glisser la souris pour dessiner le contour d’un rectangle. Lorsque vous relâchez le clic gauche, une nouvelle boîte de dialogue intitulée « Affecter une macro » apparaît. Sélectionnez votre macro et cliquez sur « OK ».
Vous pouvez désormais exécuter votre macro en un seul clic, directement à partir de la feuille de calcul!
Pour plus d’informations sur les boutons Excel, voir l’article « Ajouter un bouton et affecter une macro dans Excel ».
Conseils pour l’Enregistrement des Macros
Comme vous pouvez le constater, il est facile de se lancer dans l’enregistrement de macros – vous pouvez probablement créer des macros efficaces immédiatement, sans avoir besoin de vous documenter. Cependant, pour maîtriser les macros, vous devez savoir comment fonctionne l’enregistreur et utiliser ces connaissances pour planifier vos actions.
Ce qui est Enregistré
Excel peut enregistrer un grand nombre d’actions – plus que vous ne le pensez, et souvent plus que vous ne le souhaitez si vous ne faites pas attention! L’enregistreur de macros fonctionne en enregistrant les clics de souris et les pressions sur les touches. Si vous faites des erreurs pendant l’enregistrement, vous risquez d’introduire des comportements étranges dans votre macro.
La liste suivante comprend de nombreuses actions dont vous ne vous attendez peut-être pas à ce qu’elles soient enregistrées, mais il est important de comprendre ce qu’Excel enregistre pour mieux planifier vos macros :
- Sélection de cellules à l’aide de la souris ou du clavier (remarque : seule la dernière sélection avant une autre action est enregistrée ; par exemple, si vous sélectionnez les cellules A1:C4 puis la cellule D1, seule la sélection de D1 est enregistrée)
- Modification du texte, des formules ou du formatage des cellules (pour le texte et les formules, les modifications ne sont enregistrées qu’après avoir appuyé sur la touche Entrée)
- Défilement dans une feuille de calcul (chaque ligne/colonne que vous faites défiler est enregistrée!)
- Déplacement de la fenêtre Excel d’une position à une autre
- Activation d’autres classeurs ou feuilles de calcul (soit en cliquant dessus avec la souris, soit en utilisant des raccourcis clavier comme CTRL+PageUp)
- Ajouter, supprimer et déplacer des feuilles
- Enregistrer un classeur, ouvrir ou créer de nouveaux classeurs
- Exécution d’autres macros
Toutes ces actions peuvent introduire des conséquences inattendues dans vos macros. Par exemple, lorsque vous enregistrez une macro à utiliser dans d’autres classeurs, si vous activez accidentellement une feuille qui n’existe pas dans ces autres classeurs, la macro peut échouer lorsque vous essayez de l’exécuter à nouveau!
Ce qui n’est pas Enregistré
Malgré toutes les choses que vous pouvez enregistrer (accidentellement), il y a des choses qui ne sont pas enregistrées :
- Déplacement de la souris
- Modification du ruban (c’est-à-dire personnalisation du ruban ou clic sur d’autres onglets)
- Tout ce qui concerne l’éditeur VBA
- Tout ce que vous faites dans Windows ou dans d’autres programmes à l’extérieur d’Excel (par exemple, si vous pouvez enregistrer un copier/coller d’un classeur Excel à un autre, vous ne pouvez pas enregistrer un copier/coller de Microsoft Word ou du Bloc-notes à partir d’Excel)
- Logique – vous ne pouvez pas faire en sorte qu’Excel enregistre vos décisions (exemple : si vous sélectionnez des colonnes dans un tableau dont l’en-tête commence par « Paiement_ », Excel n’enregistrera que les adresses des colonnes que vous copiez – il ne comprendra pas que vous décidez des colonnes à sélectionner en fonction de l’en-tête)
- Les actions effectuées à l’intérieur de boîtes de dialogue telles que les boîtes de dialogue « Filtre avancé » ou « Mise en forme conditionnelle » (seul le résultat de l’appui sur OK dans une boîte de dialogue est enregistré)
Bien que ces choses ne puissent pas être *enregistrées*, elles peuvent (la plupart du temps) être codées directement dans VBA si vous avez les connaissances en programmation. La logique, en particulier, est un élément dont il faut tirer parti – l’exemple donné POURRAIT être codé manuellement dans une macro.
Utiliser les Combinaisons de Touches de Fin de Ligne pour Sélectionner des Tableaux
Lorsque vous enregistrez une macro, au lieu d’utiliser simplement la souris ou les touches fléchées pour sélectionner les tableaux, vous devez essayer d’utiliser les combinaisons END-ArrowKey. En effet, Excel enregistre les sélections de cellules différemment pour les combinaisons END-ArrowKey. Prenons l’exemple du tableau suivant :
L’utilisation de la souris ou des touches fléchées pour sélectionner ce tableau produirait le code suivant :
Range("A1:C5").Select
Si vous réexécutez cette macro, vous sélectionnerez exactement la même plage, à chaque fois. Si des données sont ajoutées au tableau, elles ne seront pas sélectionnées par la macro.
En revanche, le tableau peut être sélectionné à l’aide de deux combinaisons de touches : Maj-Fin-FlèchedeDroite, suivie de Maj-Fin-FlècheduBas. Le code suivant serait plutôt enregistré :
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Notez qu’aucune plage exacte n’est indiquée, mais que les combinaisons de touches utilisées sont enregistrées. Il n’est donc pas nécessaire de recoder la macro si le tableau s’étend.
Tirez Parti des Références Relatives
Comme indiqué précédemment, Excel enregistre les cellules exactes que vous sélectionnez lorsque vous utilisez la souris ou les touches fléchées. Si vous vous enregistrez en train de créer un tableau sur une feuille de calcul, cette macro créera le tableau au même endroit, à chaque fois. C’est ce qu’on appelle le référencement absolu.
Il est toutefois possible de modifier ce comportement en enregistrant les cellules sur lesquelles vous travaillez par rapport à la cellule initialement sélectionnée. Ainsi, votre macro pourrait créer le tableau partout où vous placez le curseur.
Pour activer les références relatives, sélectionnez l’onglet Développeur, puis cliquez sur « Utiliser les références relatives » (il s’agit d’un bouton à bascule; cliquez à nouveau pour revenir au référencement absolu). N’oubliez pas de sélectionner la cellule initiale avant de commencer à enregistrer!
Les références relatives ne sont pas enregistrées de manière universelle – certaines fonctions comme le filtre avancé ou « Mettre sous forme de tableau » exigent que l’utilisateur saisisse une plage absolue. Si vous utilisez des références relatives, vous devrez peut-être modifier le code VBA de la macro ultérieurement, tout dépendant des fonctions que vous avez enregistrées.
Gardez ça Simple!
Bien qu’il soit tentant d’enregistrer des tas et des tas de tâches dans une seule macro, il est préférable que vos macros soient petites et qu’elles se concentrent sur l’automatisation de tâches spécifiques.
D’une part, il est en fait très difficile d’enregistrer une longue macro sans faire d’erreur. Même avec un plan bien défini de clics de souris et de pressions sur les touches, des erreurs peuvent se produire et devenir rapidement frustrantes.
Deuxièmement, les macros volumineuses sont difficiles à déboguer lorsque quelque chose ne va pas. Chercher dans le code VBA pour trouver la cause du problème peut demander un temps important, et même lorsque le problème est trouvé, il peut être difficile de le résoudre sans casser autre chose.
Pour ces raisons, il est souvent préférable de diviser une longue macro en plusieurs parties plus petites qui se concentrent sur des éléments spécifiques. Par exemple, une macro qui crée un rapport peut être divisée en deux parties : une macro pour importer et consolider certaines données, et une autre pour ajouter un formatage au rapport. Ces petites macros sont plus faciles à enregistrer, à tester et à déboguer en cas de problème.