Comment enregistrer une macro dans Excel - Un guide étape par étape

Même si vous êtes un débutant complet dans le monde d'Excel VBA, vous pouvez facilement enregistrer une macro et automatiser une partie de votre travail.

Dans ce guide détaillé, je couvrirai tout ce que vous devez savoir pour commencer à enregistrer et à utiliser des macros dans Excel.

Si vous souhaitez apprendre VBA en toute simplicité, consultez mon Formation en ligne Excel VBA.

Qu'est-ce qu'une macro ?

Si vous êtes un débutant en VBA, laissez-moi d'abord vous dire ce qu'est une macro - après tout, je continuerai à utiliser ce terme dans tout le didacticiel.

Une macro est un code écrit en VBA (Visual Basic pour Applications) qui vous permet d'exécuter un morceau de code chaque fois qu'il est exécuté.

Souvent, vous trouverez des gens (y compris moi-même) qui se réfèrent à un code VBA en tant que macro - qu'il soit généré à l'aide d'un enregistreur de macros ou qu'il ait été écrit manuellement.

Lorsque vous enregistrez une macro, Excel surveille de près les étapes que vous effectuez et les note dans un langage qu'il comprend, à savoir VBA.

Et comme Excel est un très bon preneur de notes, il crée un code très détaillé (comme nous le verrons plus loin dans ce tutoriel).

Maintenant, lorsque vous arrêtez l'enregistrement, enregistrez la macro et l'exécutez, Excel revient simplement au code VBA qu'il a généré et suit exactement les mêmes étapes.

Cela signifie que même si vous ne connaissez rien à VBA, vous pouvez automatiser certaines tâches simplement en laissant Excel enregistrer vos étapes une fois, puis les réutiliser plus tard.

Voyons maintenant comment enregistrer une macro dans Excel.

Obtenir l'onglet Développeur dans le ruban

La première étape pour enregistrer une macro consiste à obtenir l'onglet Développeur dans le ruban.

Si vous pouvez déjà voir l'onglet développeur dans le ruban, passez à la section suivante, sinon suivez les étapes ci-dessous :

  • Cliquez avec le bouton droit sur l'un des onglets existants dans le ruban et cliquez sur l'option « Personnaliser le ruban ». Cela ouvrira la boîte de dialogue Options Excel.
  • Dans la boîte de dialogue Options Excel, vous aurez les options Personnaliser le ruban. Sur la droite, dans le volet Onglets principaux, cochez l'option Développeur.
  • Cliquez sur OK.

Les étapes ci-dessus rendraient l'onglet Développeur disponible dans la zone du ruban.

Enregistrer une macro dans Excel

Maintenant que tout est en place, apprenons à enregistrer une macro dans Excel.

Enregistrons une macro très simple - une qui sélectionne une cellule et y entre le texte "Excel". J'utilise le texte « Excel » lors de l'enregistrement de cette macro, mais n'hésitez pas à entrer votre nom ou tout autre texte que vous aimez.

Voici les étapes pour enregistrer cette macro :

  1. Cliquez sur l'onglet Développeur.
  2. Dans le groupe Code, cliquez sur le bouton Macro. Cela ouvrira la boîte de dialogue « Enregistrer une macro ».
  3. Dans la boîte de dialogue Enregistrer une macro, entrez un nom pour votre macro. j'utilise le nom Entrez du texte. Vous devez respecter certaines conditions de nommage lorsque vous nommez une macro. Par exemple, vous ne pouvez pas utiliser d'espaces entre les deux. Je préfère généralement garder mes noms de macros sous la forme d'un seul mot, avec différentes parties avec un premier alphabet en majuscule. Vous pouvez également utiliser un trait de soulignement pour séparer deux mots, comme Enter_Text.
  4. (Étape facultative) Vous pouvez attribuer un raccourci clavier si vous le souhaitez. Dans ce cas, nous utiliserons le raccourci Ctrl + Maj + N. N'oubliez pas que le raccourci que vous attribuez ici remplacera tous les raccourcis existants dans votre classeur. Par exemple, si vous attribuez le raccourci Ctrl + S, vous ne pourrez pas l'utiliser pour enregistrer le classeur (au lieu de cela, chaque fois que vous l'utiliserez, il exécutera la macro).
  5. Dans l'option « Stocker la macro dans », assurez-vous que « Ce classeur » est sélectionné. Cette étape garantit que la macro fait partie du classeur. Il sera là lorsque vous l'enregistrerez et le rouvrirez à nouveau, ou même si vous le partagez avec quelqu'un.
  6. (Étape facultative) Saisissez une description. Je ne le fais généralement pas, mais si vous êtes extrêmement organisé, vous voudrez peut-être ajouter de quoi parle la macro.
  7. Cliquez sur OK. Dès que vous cliquez sur OK, il commence à enregistrer vos actions dans Excel. Vous pouvez voir le bouton « Arrêter l'enregistrement » dans l'onglet Développeur, ce qui indique que l'enregistrement de la macro est en cours.
  8. Sélectionnez la cellule A2.
  9. Entrez le texte Exceller (ou vous pouvez utiliser votre nom).
  10. Appuyez sur la touche Entrée. Cela sélectionnera la cellule A3.
  11. Cliquez sur le bouton Arrêter l'enregistrement dans l'onglet Développeur.

Toutes nos félicitations!

Vous venez d'enregistrer votre première macro dans Excel. Vous n'êtes plus une macro vierge.

Bien que la macro ne fasse rien d'utile, elle servira à expliquer le fonctionnement d'un enregistreur de macros dans Excel.

Maintenant, allons de l'avant et testons cette macro.

Suivez les étapes ci-dessous pour tester la macro :

  1. Supprimez le texte dans la cellule A2. Il s'agit de tester si la macro insère le texte dans la cellule A2 ou non.
  2. Sélectionnez n'importe quelle cellule - autre que A2. Il s'agit de tester si la macro sélectionne la cellule A2 ou non.
  3. Cliquez sur l'onglet Développeur.
  4. Dans le groupe Code, cliquez sur le bouton Macros.
  5. Dans la boîte de dialogue Macro, cliquez sur le nom de la macro - EnterText.
  6. Cliquez sur le bouton Exécuter.

Vous remarquerez que dès que vous cliquez sur le bouton Exécuter, le texte « Excel » est inséré dans la cellule A2 et la cellule A3 est sélectionnée.

Maintenant, tout cela peut se produire en une fraction de seconde, mais en réalité, la macro - tout comme un elfe obéissant - a suivi les étapes exactes que vous lui avez montrées lors de l'enregistrement de la macro.

Donc la macro sélectionne d'abord la cellule A2, puis entre le texte Exceller dedans, puis sélectionne la cellule A3.

Remarque : vous pouvez également exécuter la macro à l'aide du raccourci clavier Contrôle + Maj + N (maintenez les touches Control et Shift enfoncées puis appuyez sur la touche N). Il s'agit du même raccourci clavier que nous avons attribué à la macro lors de son enregistrement.

Ce que fait l'enregistrement d'une macro dans le backend

Passons maintenant au backend Excel - l'éditeur VB - et voyons ce que fait réellement l'enregistrement d'une macro.

Voici les étapes pour ouvrir l'éditeur VB dans Excel :

  1. Cliquez sur l'onglet Développeur.
  2. Dans le groupe Code, cliquez sur le bouton Visual Basic.

Ou vous pouvez utiliser le raccourci clavier - ALT + F11 (maintenez la touche ALT enfoncée et appuyez sur F11), au lieu des deux étapes ci-dessus. Ce raccourci ouvre également le même éditeur VB.

Maintenant, si vous voyez l'éditeur VB pour la première fois, ne soyez pas submergé.

Permettez-moi de vous familiariser rapidement avec l'anatomie de VB Editor.

  • Barre de menu: C'est là que vous avez toutes les options de VB Editor. Considérez cela comme le ruban de VBA. Il contient des commandes que vous pouvez utiliser tout en travaillant avec l'éditeur VB.
  • Barre d'outils - C'est comme la barre d'outils d'accès rapide de l'éditeur VB. Il est livré avec des options utiles, et vous pouvez y ajouter plus d'options. Son avantage est qu'une option dans la barre d'outils est à portée de clic.
  • Fenêtre de l'explorateur de projet - C'est ici qu'Excel répertorie tous les classeurs et tous les objets de chaque classeur. Par exemple, si nous avons un classeur avec 3 feuilles de calcul, il apparaîtra dans l'explorateur de projet. Il y a quelques objets supplémentaires ici, tels que des modules, des formulaires utilisateur et des modules de classe.
  • Fenêtre de code - C'est là que le code VBA est enregistré ou écrit. Il existe une fenêtre de code pour chaque objet répertorié dans l'explorateur de projet - comme les feuilles de calcul, les classeurs, les modules, etc. Nous verrons plus loin dans ce tutoriel que la macro enregistrée entre dans la fenêtre de code d'un module.
  • Fenêtre Propriétés - Vous pouvez voir les propriétés de chaque objet dans cette fenêtre. J'utilise souvent cette fenêtre pour nommer des objets ou modifier les propriétés cachées. Vous ne verrez peut-être pas cette fenêtre lorsque vous ouvrez l'éditeur VB. Pour l'afficher, cliquez sur l'onglet Affichage et sélectionnez Fenêtre Propriétés.
  • Fenêtre immédiate - J'utilise souvent la fenêtre immédiate lors de l'écriture du code. C'est utile lorsque vous souhaitez tester certaines instructions ou lors du débogage. Il peut ne pas être visible par défaut et vous pouvez le faire apparaître en cliquant sur l'onglet Affichage et en sélectionnant l'option Fenêtre immédiate.

Quand nous avons enregistré la macro - Entrez du texte, les événements suivants se sont produits dans l'éditeur VB :

  • Un nouveau module a été inséré.
  • Une macro a été enregistrée avec le nom que nous avons spécifié - Entrez du texte
  • Le code a été écrit dans la fenêtre de code du module.

Donc, si vous double-cliquez sur le module (Module 1 dans ce cas), une fenêtre de code comme indiqué ci-dessous apparaîtrait.

Voici le code que l'enregistreur de macros nous a donné :

Sub EnterText() ' ' EnterText Macro ' ' Raccourci clavier : Ctrl+Shift+N ' Range("A2").Select ActiveCell.FormulaR1C1 = "Excel" Range("A3").Select End Sub

En VBA, toute ligne qui suit le (signe apostrophe) n'est pas exécuté. C'est un commentaire qui est placé à titre informatif seulement. Si vous supprimez les cinq premières lignes de ce code, la macro fonctionnera toujours comme prévu.

Maintenant, permettez-moi de couvrir rapidement ce que fait chaque ligne de code :

Le code commence par Sub suivi du nom de la macro et d'une parenthèse vide. Sub est l'abréviation de Subroutine. Chaque sous-routine (également appelée procédure) dans VBA commence par Sub et se termine par End Sub.

  • Plage ("A2").Sélectionnez - Cette ligne sélectionne la cellule A2.
  • ActiveCell.FormulaR1C1 = « Excel » - cette ligne saisit le texte Excel dans la cellule active. Puisque nous avons sélectionné A2 comme première étape, il devient notre cellule active.
  • Plage ("A3").Sélectionnez - Ceci sélectionne la cellule A3. Cela se produit lorsque nous appuyons sur la touche Entrée après avoir entré le texte, ce qui a entraîné la sélection de la cellule A3.

J'espère que vous avez maintenant une compréhension de base de la façon d'enregistrer une macro dans Excel.

Gardez à l'esprit que le code écrit par un enregistreur de macros n'est en aucun cas un code efficace.

L'enregistreur de macros ajoute parfois beaucoup de fluff au code, ce qui n'est parfois pas nécessaire. Mais cela ne veut pas dire que ce n'est pas utile. Pour quelqu'un qui apprend VBA, un enregistreur de macros peut être un excellent moyen d'analyser le fonctionnement de VBA.

Enregistrement de macro absolu vs relatif

Vous connaissez déjà les références absolues et relatives dans Excel… non ?

Si ce n'est pas le cas, lisez d'abord ce tutoriel sur les références.

Lis le? Allons-nous en.

Nous verrons plus loin dans cette section comment enregistrer des macros dans des références absolues et relatives. Mais avant cela, permettez-moi de résumer rapidement la différence entre référence absolue et relative en VBA (au cas où vous seriez paresseux et n'auriez pas lu sur le lien que j'ai donné il y a quelques lignes):

Si vous utilisez une option de référence absolue pour enregistrer une macro, le code VBA fera toujours référence aux mêmes cellules que vous avez utilisées. Par exemple, si vous sélectionnez la cellule A2, entrez le texte Excel et appuyez sur Entrée, à chaque fois - peu importe où vous vous trouvez dans la feuille de calcul et quelle que soit la cellule sélectionnée, votre code sélectionnera d'abord la cellule A2, entrez le texte Excel, et puis passez à la cellule A3.

Si vous utilisez une option de référence relative pour enregistrer une macro, VBA ne codera pas en dur les références de cellule. Au contraire, il se concentrerait sur le mouvement par rapport à la cellule active. Par exemple, supposons que vous ayez déjà sélectionné la cellule A1 et que vous commenciez à enregistrer la macro dans le mode de référence relative.

Maintenant, vous sélectionnez la cellule A2, entrez le texte Excel et appuyez sur la touche Entrée. Désormais, lorsque vous exécutez cette macro, elle ne revient pas à la cellule A2, au lieu de cela, elle se déplace par rapport à la cellule active. Par exemple, si la cellule K3 est sélectionnée, elle passera à K4, saisira le texte Excel, puis sélectionnera enfin la cellule K5.

Maintenant, laissez-moi vous expliquer comment enregistrer une macro en mode références relatives :

  1. Sélectionnez la cellule A1.
  2. Cliquez sur l'onglet Développeur.
  3. Dans le groupe Code, cliquez sur le bouton « Utiliser des références relatives ». Il deviendra vert, indiquant qu'il est allumé.
  4. Cliquez sur le bouton Enregistrer une macro.
  5. Dans la boîte de dialogue Enregistrer une macro, entrez un nom pour votre macro. j'utilise le nom EnterTextRelRef.
  6. Dans l'option Enregistrer la macro dans, assurez-vous que « Ce classeur » est sélectionné.
  7. Cliquez sur OK.
  8. Sélectionnez la cellule A2.
  9. Entrez le texte Exceller (ou vous pouvez entrer votre nom).
  10. Appuyez sur la touche Entrée. Cela amènera le curseur à la cellule A3.
  11. Cliquez sur le bouton Arrêter l'enregistrement dans l'onglet Développeur.

Cela enregistrerait la macro dans le mode de référence relative.

Maintenant, faites ceci.

  1. Sélectionnez n'importe quelle cellule (autre que A1).
  2. Cliquez sur l'onglet Développeur.
  3. Dans le groupe Code, cliquez sur le bouton Macros.
  4. Dans la boîte de dialogue Macro, cliquez sur le nom de la macro - EnterTextRelRef.
  5. Cliquez sur le bouton Exécuter.

Ce qui se produit? Le curseur est-il revenu à la cellule A3.

Ce ne serait pas - parce que vous avez enregistré la macro dans le mode de référence relative. Ainsi, le curseur se déplacerait par rapport à la cellule active. Par exemple, si vous faites cela lorsque la cellule K3 est sélectionnée, il entrera le texte Excel est la cellule K4 et finira par sélectionner la cellule K5.

Voici le code qui est enregistré dans le backend (fenêtre de code du module VB Editor) :

Sub EnterTextRelRef() ' ' EnterTextRelRef Macro ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1"). Sélectionnez End Sub

Notez que ce code entier ne fait référence nulle part aux cellules K3 ou K4. Au lieu de cela, il utilise Activecell pour faire référence à la cellule sélectionnée et Offset pour se déplacer par rapport à la cellule active.

Ne vous inquiétez pas de la partie Range ("A1") du code. C'est l'un de ces codes inutiles que l'enregistreur de macros ajoute qui ne sert à rien et peut être supprimé. Le code fonctionnerait très bien sans cela.

Le bouton « Utiliser une référence relative » dans l'onglet Développeur est un bouton à bascule. Vous pouvez le désactiver (et revenir à la référence absolue) en cliquant dessus.

Ce qu'un enregistreur de macros ne peut pas faire

L'enregistreur de macros est idéal pour vous suivre dans Excel et enregistrer vos étapes exactes, mais il peut vous échouer lorsque vous en avez besoin pour en faire plus.

  • Vous ne pouvez pas exécuter un code sans sélectionner l'objet. Si vous souhaitez que l'enregistreur de macros passe à la feuille de calcul suivante et surligne toutes les cellules remplies de la colonne A, sans quitter la feuille de calcul actuelle, il ne pourra pas le faire. C'est parce que si je vous demande de faire ceci, même vous ne pourrez pas le faire (sans quitter la feuille en cours). Et si vous ne pouvez pas le faire vous-même, comment l'enregistreur de macros capturera-t-il vos actions. Dans de tels cas, vous devez créer/modifier manuellement le code.
  • Vous ne pouvez pas créer une fonction personnalisée avec un enregistreur de macros. Avec VBA, vous pouvez créer des fonctions personnalisées que vous pouvez utiliser dans la feuille de calcul en tant que fonctions normales. Vous pouvez le créer en écrivant le code manuellement.
  • Vous ne pouvez pas exécuter de codes basés sur des événements : Dans VBA, vous pouvez utiliser de nombreux événements, tels que l'ouverture d'un classeur, l'ajout d'une feuille de calcul, un double-clic sur une cellule, etc., pour exécuter un code associé à cet événement. Vous pouvez utiliser un enregistreur de macros pour ce faire.
  • Vous ne pouvez pas créer de boucles avec un enregistreur de macros. Lorsque vous entrez manuellement le code, vous pouvez tirer parti de la puissance des boucles dans VBA (telles que For Next, For Each Next, Do While, Do until). Mais vous ne pouvez pas le faire lorsque vous enregistrez une macro.
  • Vous ne pouvez pas analyser les conditions : Vous pouvez vérifier les conditions dans le code à l'aide de l'enregistreur de macros. Si vous écrivez un code VBA manuellement, vous pouvez utiliser les instructions IF Then Else pour analyser une condition et exécuter un code si vrai (ou un autre code si faux).
  • Vous ne pouvez pas passer d'arguments dans une procédure de macro : Lorsque vous enregistrez une macro, elle n'aura jamais d'arguments. Un sous-programme peut prendre des arguments d'entrée qui peuvent être utilisés dans la macro pour effectuer une tâche. Lors de l'enregistrement d'une macro, cela ne peut pas être fait car les macros enregistrées sont indépendantes et ne sont connectées à aucune autre macro existante.

Extensions de fichiers compatibles avec les macros

Lorsque vous enregistrez une macro ou que vous écrivez manuellement du code VBA dans Excel, vous devez enregistrer le fichier avec une extension de fichier compatible avec les macros (.xlsm).

Avant Excel 2007, il y avait un seul format de fichier qui suffisait - .xls.

Mais à partir de 2007, .xlsx a été introduit comme extension de fichier standard. Les fichiers enregistrés au format .xlsx ne peuvent pas contenir de macro. Donc, si vous avez un fichier avec l'extension .xlsx et que vous enregistrez/écrivez une macro et l'enregistrez, il vous avertira de l'enregistrer dans un format compatible avec les macros et vous montrera une boîte de dialogue (comme indiqué ci-dessous) :

Si vous sélectionnez Non, Excel vous permet de l'enregistrer dans un format prenant en charge les macros. Mais si vous cliquez sur Oui, Excel supprimera automatiquement tout le code de votre classeur et l'enregistrera en tant que classeur .xlsx.

Donc, si vous avez une macro dans votre classeur, vous devez l'enregistrer au format .xlsm pour conserver cette macro.

Différentes façons d'exécuter une macro dans Excel

Jusqu'à présent, nous n'avons vu qu'une seule façon d'exécuter une macro dans Excel - qui utilise la boîte de dialogue Macro.

Mais il existe plusieurs façons d'exécuter des macros.

  1. Exécuter une macro à partir du ruban (onglet Développeur)
  2. Utilisation d'un raccourci clavier (que vous devez attribuer)
  3. Attribuer la macro à une forme
  4. Attribuer la macro à un bouton
  5. Exécuter une macro à partir de l'éditeur VB

Conclusion - Enregistrer une macro lorsqu'elle est bloquée

J'ai déjà mentionné qu'un enregistreur de macros est un outil utile pour quiconque travaille avec VBA dans Excel.

Lorsque vous utilisez l'enregistreur de macros plusieurs fois, vous remarquerez qu'il crache beaucoup de code inutile. Cependant, il est toujours utile et vous donne quelques idées par où commencer. Par exemple, si je vous demande de filtrer une colonne de cellules à l'aide de VBA et que vous n'avez aucune idée de la syntaxe, vous pouvez rapidement enregistrer une macro et consulter le code.

Un enregistreur de macros est un outil indispensable et même après des années d'expérience en codage VBA à mon actif, j'ai souvent recours à l'enregistreur de macros pour obtenir de l'aide.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave