Comment enregistrer une macro dans Excel ?

POINTS CLÉS

  • Enregistrer une macro signifie enregistrer les actions que vous effectuez dans Excel.
  • Vous devez utiliser l’enregistreur de macros pour enregistrer une macro.
  • L’enregistreur de macros génère le code à l’arrière pendant que vous effectuez l’activité.
  • Dans Excel, vous ne pouvez pas faire une pause pendant l’enregistrement d’une macro.
  • L’enregistreur de macros ne crée pas de code parfait, alors assurez-vous de nettoyer votre code après l’enregistrement.

Ce guide vous aidera à apprendre tous les aspects de l’enregistrement d’une macro. Vous apprendrez également à nettoyer le code après l’avoir enregistré.

Alors, commençons.

Qu’est-ce que l’enregistreur de macros ?

Excel Macro Recorder est un outil qui peut enregistrer les actions (pas toutes) que vous effectuez dans Excel et génère du code pour cela. Effectuez une tâche spécifique une fois, et cela génère une macro pour cela, et pour la prochaine fois au lieu de faire cette tâche manuellement, vous devez exécuter ce code.

Pensez à une caméra vidéo, elle fonctionne comme elle et génère du code pour l’activité que vous effectuez.

Vous devez comprendre qu’il peut arriver qu’un enregistreur de macros ne puisse pas fournir de code. Cependant, c’est toujours un excellent moyen de connaître le code si vous ne le savez pas.

Vous pouvez trouver le bouton de l’enregistreur de macros dans l’ onglet développeur .

bouton-enregistreur-de-macro

L’utilisation de VBA pour la programmation dans Excel est l’une des compétences avancées d’Excel et pour démarrer avec VBA, vous devez maîtriser l’enregistrement de macros.

Planification avant d’enregistrer une macro

Si vous voulez enregistrer une vidéo, vous devez faire un peu de planification avant, comme créer un script, avoir des lumières appropriées, etc.

à propos de macro-enregistreur

De la même manière, pour enregistrer une macro, il est indispensable de faire un peu de planification.

Le fait est que vous ne voulez pas obtenir de code pour l’activité que vous ne voulez pas exécuter tout en utilisant à nouveau la macro enregistrée.

La meilleure façon d’y parvenir est de noter les étapes que vous devez effectuer, puis de vous y tenir pendant l’enregistrement.

Ici nous allons enregistrer une macro qui peut faire appliquer la mise en forme suivante à la cellule sélectionnée :

  • Couleur de la police : rouge
  • Taille de la police : 12
  • Style de police : Verdena
  • Texte de la police : Gras

Comme je l’ai dit, la planification est essentielle, et avant d’enregistrer cette macro, il y a une chose dont nous devons nous occuper, et c’est de sélectionner la cellule cible avant de commencer l’enregistrement.

Comme je l’ai dit, la planification est essentielle, et avant d’enregistrer cette macro, il y a une chose dont nous devons nous occuper, et c’est de sélectionner la cellule cible avant de commencer l’enregistrement.

La raison en est que si nous sélectionnons une cellule lors de l’enregistrement de la macro, elle enregistrera également cette sélection.

Ainsi, lorsque vous réexécuterez cette macro, elle sélectionnera cette cellule particulière pour y appliquer toute la mise en forme. Mais ce que nous voulons, c’est appliquer la mise en forme sur la cellule, qui est active (qui est sélectionnée).

Étapes pour enregistrer une macro à l’aide de l’enregistreur de macros

Pour ENREGISTRER une MACRO dans Excel, vous pouvez suivre les étapes suivantes :

  1. Tout d’abord, sélectionnez la cellule A4 (c’est la cellule sur laquelle nous allons appliquer la mise en forme et l’enregistrement de notre macro).
    record-a-macro-in-excel
  2. Après cela, allez dans « l’onglet Développeur », et avant d’appuyer sur le bouton « ENREGISTRER », activez la référence relative (nous allons en savoir plus dans quelques minutes).
    turn-on-the-relative-reference
  3. Appuyez sur le bouton d’enregistrement.
  4. Et au moment où vous cliquez dessus, vous obtiendrez une boîte de dialogue pour remplir certains détails sur la macro que vous allez enregistrer (oui, nous devons la remplir).
    dialog-box-to-fill-some-of-the-details-about-the-macro
    • Nom de la macro : « HighlightCell ».
    • Touche de raccourci : Appuyez sur Maj + H pour définir le raccourci clavier Contrôle + Maj + H.
    • Stocker la macro dans : sélectionnez Classeur de macros personnelles.
    • Description : Cette macro applique une couleur rouge, une taille de police 12, un style de police Verdana et met la police en gras.
  5. Enfin, cliquez sur OK.
  6. À ce stade, les étoiles d’Excel pour tout enregistrer (vous pouvez voir l’icône sur la barre d’état qui indique « Une macro est en cours d’enregistrement, cliquez pour arrêter l’enregistrement »).
    a-macro-is-currently-recording
  7. Alors maintenant, appliquez les quatre formatages que nous avons décidés.
    apply-all-the-four-formattings
    • Couleur de la police : rouge
    • Taille de la police : 12
    • Style de police : Verdena
    • Texte de la police : Gras
  8. Une fois que vous avez fait cela, revenez à l’onglet développeur et cliquez sur « Arrêter l’enregistrement » ou vous pouvez également arrêter l’enregistrement à partir de la barre d’état où il est écrit « cliquez ici pour arrêter l’enregistrement ».
    stop-recording

Toutes nos félicitations! Vous l’avez fait et à ce stade, vous avez une macro enregistrée dans votre classeur, mais maintenant la prochaine chose est de la comprendre.

Comment l’enregistreur de macro génère un code

L’enregistreur de macro génère un code pour vous à l’arrière lorsque vous effectuez les activités.

Pour comprendre cela, vous devez d’abord voir le code. Alors pour cela, ouvrez l’ éditeur Visual Basic , rendez-vous dans l’onglet Développeur ➜ Éditeur Visual Basic.

ouvrir-l-éditeur-visuel-basique

Et puis ouvrez module1 où vous avez votre code stocké.

ouvrir-le-module1

Dans la fenêtre de code, vous pouvez voir l’intégralité du code généré par l’enregistreur de macros ainsi que tous les détails que vous avez entrés.

Comme vous pouvez le voir, le nom de la macro, la touche de raccourci et la description sont là avant le code.

Comprenons maintenant le code (comme je l’ai dit plus tôt, l’enregistreur de macros ne crée pas un code parfait, vous devez donc le nettoyer à chaque fois, et nous l’apprendrons dans la partie suivante).

Vous avez effectué les quatre activités dans et l’enregistreur de macros a généré le code en quatre parties.

macro-enregistreur-a-généré-le-code
  1. Dans la première partie, le code indique que la couleur de police de la cellule sélectionnée doit être rouge, et il a utilisé une valeur numérique pour cela.
  2. La deuxième partie du code indique que la taille de police des cellules sélectionnées doit être « 12 ».
  3. Et dans la troisième partie, il est dit que le style de police devrait être « Verdana ».
  4. Enfin, dans la quatrième partie, il est indiqué que la police de la cellule sélectionnée doit être en gras.

Nettoyer la macro enregistrée

À ce stade, vous avez enregistré votre première macro et vous savez comment ce code est généré. Mais vous devez nettoyer le code que vous avez dans le module.

Sub HighlightCell()
'
'HighlightCell Macro
'This macro applies a red   color, font size 12,
'font style Verdana, and makes the font bold
'
'Keyboard Shortcut:   Ctrl+Shift+H
'
With Selection.Font
   .Color = -16776961
   .TintAndShade = 0
End With
  
With Selection.Font
   .Name = "Calibri"
   .Size = 12
   .Strikethrough = False
   .Superscript = False
   .Subscript = False
   .OutlineFont = False
   .Shadow = False
   .Underline = xlUnderlineStyleNo
   .Color = -16776961
   .TintAndShade = 0
   .ThemeFont = xlThemeFontMinor
End With
   
With Selection.Font
   .Name = "Verdana"
   .Size = 12
   .Strikethrough = False
   .Superscript = False
   .Subscript = False
   .OutlineFont = False
   .Shadow = False
   .Underline = xlUnderlineStyleNone
   .Color = -16776961
   .TintAndShade = 0
   .ThemeFont = xlThemeFontNone
End With  
Selection.Font.Bold = True
   
End Sub   

Si vous regardez attentivement, c’est bien plus long que les activités qu’il peut effectuer. Il y a beaucoup de propriétés incluses dans ce code qui ne sont pas requises.

Non seulement avec ce code, chaque fois que vous enregistrez une macro, vous devez la nettoyer à chaque fois.

Mais avant de commencer à nettoyer ce code, vous devez vous souvenir des quatre activités que vous avez effectuées et pour lesquelles vous devez avoir du code dans votre module :

  • Couleur de la police : rouge
  • Taille de la police : 12
  • Style de police : Verdena
  • Texte de la police : Gras

Identifions les lignes de code qui exécutent ces quatre activités.

identifier-les-lignes-de-code

Maintenant, vous avez identifié les lignes de code qui font les activités réelles que vous avez effectuées, et nous avons également ce code en quatre parties.

Il est temps de nettoyer le code et de supprimer toutes les lignes indésirables. Suivez les étapes ci-dessous.

  • Dans la PREMIÈRE partie, vous avez besoin du code de ligne qui applique la couleur de police ROUGE, donc la propriété « TintAndShade » ne l’exige pas.
code-de-ligne-qui-applique-la-couleur-de-police-rouge
  • Maintenant, dans la DEUXIÈME partie, nous avons besoin de la taille de la police, pas de toutes les autres propriétés, alors supprimez-les.
la-taille-de-la-police
  • Après cela, dans la TROISIÈME partie, nous devons avoir la propriété du nom de la police, donc supprimez toutes les autres propriétés.
nom-police-propriété
  • Dans la QUATRIÈME partie, vous n’avez qu’une seule ligne de code, qui consiste à mettre la police en gras.

À ce stade, le code ressemble à ceci, ce qui est bien inférieur au code généré par l’enregistreur de macros.

mettre-la-police-en-gras
Sub HighlightCell()
'
'HighlightCell Macro
'This macro applies a red   color, font size 12,
'font style Verdana, and makes the font bold
'
'Keyboard Shortcut:   Ctrl+Shift+H
'
With Selection.Font
 .Color = -16776961
End With
  
With Selection.Font
 .Size = 12
End With
  
With Selection.Font
 .Name = "Verdana"
End With
   
Selection.Font.Bold = True
   
End Sub 

Mais vous pouvez encore faire plus.

Si vous regardez attentivement le code, il a utilisé quatre fois « With Selection.Font », mais comme vous faites référence au même objet pour les quatre propriétés, vous pouvez donc l’utiliser une fois.

Donc le code final sera :

code final
Sub HighlightCell()
'
'HighlightCell Macro
'This macro applies a red   color, font size 12,
'font style Verdana, and makes the font bold
'
'Keyboard Shortcut:   Ctrl+Shift+H
'
With Selection.Font
 .Color = -16776961
 .Name = "Verdana"
 .Size = 12
 .Bold = True
End With
End Sub 

Lorsque vous exécutez ce code, il effectuera les mêmes activités que vous avez enregistrées.

Qu’est-ce que tu viens de faire ?

Dans le nouveau code, vous n’avez que des lignes de code qui exécutent les activités dont vous avez besoin.

Le point à comprendre ici est qu’avec chaque objet, il y a toujours des propriétés, et lorsque l’enregistreur de macros enregistre, il ajoute toutes ces propriétés avec cet objet même si vous ne les utilisez pas.

C’est pourquoi vous devez supprimer toutes ces propriétés du code.

Et l’autre chose est que, même si vous n’utilisez qu’un seul objet dans votre code, l’enregistreur de macros s’y réfère encore et encore lorsque vous effectuez différentes activités et c’est pourquoi vous avez utilisé « With Selection. Font » une seule fois et ajoutez toutes les propriétés en dessous.

Dans toutes les situations, pour nettoyer un code généré par l’enregistreur de macros, vous devez identifier les lignes de code réelles qui exécutent les activités dont vous avez besoin et supprimer le reste.

Lors du nettoyage d’un code de macro enregistré, la meilleure façon est de déboguer le code étape par étape.

Lis ça

  • Ouvrez l’éditeur VBA et la fenêtre Excel côte à côte, puis appuyez sur F8 pour exécuter le code étape par étape.
  • Comme vous avez la fenêtre Excel ouverte sur le côté, vous pouvez voir quelle ligne de code exécute l’activité.
  • Et une fois que vous avez identifié le code dont vous avez besoin et que vous pouvez supprimer le code, ce qui n’est pas nécessaire.

Nommer une macro

Chaque fois que vous enregistrez une macro, il est nécessaire de donner un nom à cette macro, mais il y a quelques règles auxquelles un nom doit se conformer :

  • Le nom d’une macro peut comporter jusqu’à 80 caractères.
  • Vous ne pouvez pas utiliser d’espaces, de ponctuation ou de caractères spéciaux.
  • Il doit commencer par une lettre.

En dehors de ces règles, il y a quelques mots qui sont interdits par VBA à utiliser comme nom.

D’autre part, il est essentiel d’utiliser un nom significatif au lieu d’avoir des noms par défaut comme Macro1 ou Test1.

Comme vous ne pouvez pas utiliser d’espaces dans le nom d’une macro, vous pouvez utiliser un trait de soulignement ou mettre la première lettre de chaque mot en majuscule pour augmenter la lisibilité.

Stockage de la macro enregistrée

Avant d’enregistrer une macro, vous devez spécifier où vous souhaitez l’enregistrer et vous avez trois options pour cela :

stocker-la-macro-enregistrée
  • Nouveau classeur : vous pouvez sélectionner cette option si vous souhaitez enregistrer votre macro dans un nouveau classeur.
  • Ce classeur : En sélectionnant cette option, vous pouvez enregistrer la macro dans le classeur en cours.
  • Classeur de macros personnelles : Avec cette option, vous pouvez accéder aux macros de tous les classeurs.

Référence relative

Lors de l’enregistrement de la macro ci-dessus, je vous ai dit de sélectionner « Utiliser les références relatives » avant d’appuyer sur le bouton « Démarrer l’enregistrement ».

Dans Excel, lorsque vous enregistrez une macro, Excel utilise la « Référence absolue » par défaut. Cependant, vous pouvez le modifier avant d’enregistrer une macro.

Le fait est que l’utilisation de références relatives est cruciale si vous souhaitez qu’une macro exécute l’activité enregistrée n’importe où dans la feuille de calcul.

Pour vous faire comprendre la différence entre les deux modes de référence, je veux que vous enregistriez l’activité de deux manières différentes.

  • Tout d’abord, sélectionnez la cellule A1 et commencez à enregistrer une macro (sans activer « Utiliser la référence relative »), puis sélectionnez la cellule E5 .
  • Vous obtiendrez le code ci-dessous par l’enregistreur de macro :
Sub AbsoluteReferenceMacro()
Range("E5").Select
End Sub  
  • Encore une fois, sélectionnez la cellule A1, activez « Utiliser la référence relative » et enregistrez la même activité (sélectionnez la cellule E5).
  • Mais pour le moment, le code que vous avez obtenu est différent :
Sub RelativeReferenceMacro()
ActiveCell.Offset(4, 4).Range(“A1”).Select
End Sub

Vous avez enregistré ces deux codes faisant la même activité mais en utilisant des modes de référence différents. Droite?

Le premier code de macro est assez simple à comprendre ; il dit de sélectionner la cellule E5.

Et si vous exécutez cette macro, elle effectue la même chose, c’est-à-dire la sélection de la cellule E5, quelle que soit la cellule que vous avez sélectionnée à ce stade.

D’autre part, le deuxième code de macro dit autre chose, et si vous sélectionnez une autre cellule avant d’exécuter ce code, il sélectionnera une cellule différente.

Pourquoi?

Lorsque vous avez enregistré cette macro, la cellule active était A1, puis vous avez sélectionné E5, qui est quatre cellules vers le bas et quatre cellules à droite de la cellule A1.

Maintenant, comme vous avez enregistré cette macro avec une référence relative, cela sélectionnera toujours la cellule, qui est quatre cellules vers le bas et quatre cellules à droite de la cellule active.

Disons que si la cellule active est D4, elle sélectionnera la cellule H8, qui est quatre cellules vers le bas et quatre cellules vers la droite.

Vous pouvez modifier la référence à tout moment, même au milieu de l’enregistrement.

Mettre une macro en pause

Malheureusement, Excel ne vous permet pas de suspendre une macro pendant son enregistrement. C’est possible dans Microsoft Word, mais pas dans Excel.

Si vous enregistrez une macro où vous devez effectuer de nombreuses activités, il est préférable de l’enregistrer en plusieurs parties afin d’avoir moins de risques d’erreurs.

Limites de l’enregistreur de macros

Oui, quelques limitations viennent avec l’enregistreur de macros. Il y a beaucoup de choses que vous pouvez effectuer avec un code VBA, mais l’enregistreur de macros ne peut pas enregistrer toutes les activités.

  • Impossible de créer une fonction personnalisée : VBA vous permet de créer une fonction personnalisée que vous pouvez utiliser dans la feuille de calcul, mais cela n’est pas possible lors de l’enregistrement d’une macro.
  • Impossible d’utiliser les fonctions intégrées : VBA a ses fonctions ( Fonctions VBA ), mais vous ne pouvez pas les utiliser avec l’enregistreur de macros.
  • Impossible de tester les conditions : lors de l’enregistrement d’une macro, vous ne pouvez pas utiliser l’ instruction VBA IF Then Else pour vérifier les conditions.
  • Impossible d’effectuer une boucle : Dans VBA, vous pouvez utiliser des instructions de boucle lors de l’écriture de code, mais ce n’est pas possible avec l’enregistreur de macros.
  • Impossible d’effectuer une activité avec l’objet : Lors de l’enregistrement d’une macro, vous ne pouvez pas effectuer une action sans sélectionner réellement un objet. Par exemple, si vous souhaitez mettre en gras un texte à partir d’une cellule particulière, vous devez d’abord sélectionner cette cellule.

Vaut-il la peine d’utiliser l’enregistreur de macros ?

Je peux parier que vous avez cette question dans votre esprit, et c’est valable. Permettez-moi de partager une histoire personnelle avec vous pour répondre à cette question.

Il y a quelques années, je travaillais sur un code VBA pour insérer un tableau croisé dynamique , et à cette époque je n’étais pas au courant de tous les objets que j’avais besoin d’utiliser pour écrire ce code. Donc, ce que j’ai fait, j’ai enregistré une macro lors de la création manuelle d’un tableau croisé dynamique.

Ensuite, j’ai examiné ce code pour comprendre l’ensemble du processus impliqué dans l’insertion d’un tableau croisé dynamique. Oui, ce code n’était pas parfait mais m’a donné une idée à écrire.

Ce que je veux dire, c’est qu’il peut y avoir des situations où vous devez écrire le code, et l’enregistreur de macros peut vous aider à ce moment-là. L’enregistreur de macros m’a également aidé à écrire des codes pour ce modèle d’inventaire .

Emballer

Vous devez vous concentrer sur les points suivants pour réussir l’enregistrement d’une macro :

  • Définissez le classeur dans lequel vous allez enregistrer la macro et fermez tous les autres classeurs.
  • Assurez-vous de sélectionner le bon objet pour enregistrer la macro.
  • Assurez-vous de décider d’utiliser des références absolues ou relatives avant d’enregistrer la macro.
  • Planifiez les actions que vous souhaitez effectuer.

Questions fréquemment posées

Où est le bouton de l’enregistreur de macro ?

C’est dans le groupe de code de l’onglet Développeur.

Comment puis-je voir le code généré par l’enregistreur de macro ?

Vous pouvez le voir depuis l’éditeur Visual Basic.

Est-ce que l’enregistreur de macro génère un code parfait ?

Pas vraiment, vous devez nettoyer ce code après l’avoir enregistré.

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *