Comment exécuter une macro dans Excel

Bien que l'exécution d'une macro dans Excel ne soit pas difficile, il existe de nombreuses façons de les exécuter. Certains moyens sont destinés à faciliter l'utilisation des macros, tandis que d'autres peuvent changer complètement la façon dont un utilisateur interagit avec votre classeur. Dans cet article, nous aborderons certaines manières évidentes d'exécuter des macros telles que les commandes Liste de macros et Bouton, et certaines manières plus obscures telles que l'éditeur VB et les événements.

Premièrement : assurez-vous que les macros sont activées

Les fonctionnalités de sécurité d'Excel désactiveront les macros par défaut. Lors de l'ouverture d'un classeur prenant en charge les macros, les utilisateurs sont généralement invités s'ils souhaitent activer les macros.

Si vous ne parvenez pas à exécuter de macros, essayez de suivre ces instructions :

  • Enregistrer le classeur
  • Fermez le classeur, puis ouvrez-le à nouveau
  • Lorsque le classeur se charge, vous verrez un Avertissement de sécurité invite (illustré ci-dessous). Cliquez sur Autoriser le contenu.

Exécuter une macro à partir de la liste des macros

Une liste de macros est accessible à partir de l'onglet Affichage. Pour afficher cette liste :

  • Sélectionnez le Vue languette
  • Cliquez sur le bouton intitulé Macro pour afficher la liste des macros

  • Sélectionnez la macro que vous souhaitez exécuter dans la liste, puis cliquez sur le bouton Courir bouton

Vous pouvez également afficher la liste des macros à tout moment en appuyant sur ALT+F8.

Exécuter une macro à l'aide d'un raccourci clavier

Vous pouvez affecter un raccourci clavier à une macro que vous utilisez souvent, sous la forme CTRL+ ou CTRL+MAJ+. Pour faire ça:

  • Affichez la liste des macros (Vue > Macro, ou ALT+F8)
  • Sélectionnez la macro à laquelle vous souhaitez appliquer un raccourci
  • Cliquez sur Options… pour montrer le Options de macros sous-boîte de dialogue

  • Dans la zone de texte sous Touche de raccourci, tapez une seule lettre, puis cliquez sur d'accord. Si vous maintenez la touche MAJ enfoncée tout en tapant la lettre, l'étiquette à côté de la case affichera MAJ dans le raccourci

REMARQUE: il est fortement recommandé d'utiliser SHIFT lors de la création d'une touche de raccourci ! Excel utilise les raccourcis CTRL+ pour lui-même, par ex. CTRL+C pour copier ou CTRL+V pour enregistrer. Si vous créez un raccourci macro à l'aide de ces raccourcis ou d'autres raccourcis Excel, vous écraserez le raccourci Excel jusqu'à ce que vous réattribuiez le raccourci macro.

Exécuter une macro à partir de l'éditeur VB

Les macros peuvent également être exécutées à partir de l'éditeur VB. L'éditeur VB vous permet de revoir le code d'une macro et d'apporter les modifications souhaitées avant de l'exécuter.

Pour exécuter une macro dans l'éditeur VB :

  • Ouvrez l'éditeur VB (onglet Développeur > Visual Basic ou ALT+F11)

  • Dans le Projet fenêtre, double-cliquez sur le module contenant la macro que vous souhaitez tester
  • Dans la fenêtre de code du module, placer le curseur n'importe où sur le code de la macro entre "Sub" et "End Sub"
  • Clique le Courir dans la barre d'outils ou appuyez sur le raccourci clavier F5

Exécuter une macro à l'aide d'un bouton ou d'une forme

Il est souvent utile d'avoir un contrôle sur la feuille de calcul sur lequel un utilisateur peut cliquer pour exécuter une macro, comme un contrôle Button ou une forme. C'est beaucoup plus rapide pour les utilisateurs finaux que d'ouvrir des listes de macros ou de fouiller dans le code des macros dans l'éditeur VB.

Des informations sur la création d'un bouton ou d'une forme cliquable sont disponibles ici : Ajouter un bouton et attribuer une macro dans Excel.

Exécuter automatiquement une macro à l'aide d'événements dans VBA

Il est possible d'exécuter une macro lorsque quelque chose se produit dans Excel - par exemple, lorsqu'un classeur est ouvert ou lorsqu'une valeur de cellule est modifiée. Ceux-ci sont appelés Événements, et vous pouvez écrire du code VBA pour qu'ils appellent des macros ou effectuent d'autres opérations.

Pour écrire le code d'un événement, vous devrez utiliser l'éditeur VB. Par exemple, pour afficher les événements du classeur :

  • Ouvrez l'éditeur VB (ALT+F11)
  • Double-cliquez sur le Ce classeur objet dans l'éditeur VB Fenêtre de projet
  • Choisissez "Classeur" dans la liste déroulante en haut à gauche de la fenêtre de code
  • Cliquez sur le menu déroulant à droite pour voir la liste des événements

Voici un petit mais utile exemple d'événements Excel à partir desquels vous pouvez exécuter des macros.

Classeur_Ouvert()

L'événement Workbook_Open() se déclenche lorsqu'un classeur est ouvert. Si vous recevez l'avertissement de sécurité après avoir ouvert un classeur, cet événement se déclenche après avoir cliqué sur « Activer le contenu ».

12345 Sous-classeur privé_Open()MsgBox "Classeur ouvert !"Fin du sous-marin

Workbook_BeforeClose (Annuler en tant que booléen)

Workbook_BeforeClose() se déclenche lorsque l'utilisateur essaie de fermer le classeur. Cela se produit avant toute vérification pour voir si le classeur doit être enregistré.

Les Annuler Le paramètre peut être défini sur True pour empêcher la fermeture du classeur.

123456789 Private Sub Workbook_BeforeClose (Annuler en tant que booléen)Si MsgBox("Êtes-vous sûr ?", vbYesNo + vbQuestion, "Close") = vbNo ThenAnnuler = VraiFin siFin du sous-marin

Worksheet_Change (ByVal Target As Range)

Worksheet_Change() se déclenche lorsque la valeur d'une cellule est modifiée, qu'elle soit modifiée par une macro, par une opération de copier/coller ou par un lien externe. Cependant, il ne se déclenche pas lorsqu'une valeur est recalculée via une formule.

Les Cible Le paramètre représente les cellules dont la valeur a changé.

Si vous modifiez la valeur d'autres cellules à l'intérieur de cet événement, l'événement se déclenchera à nouveau. Cela peut éventuellement provoquer une boucle infinie. Si vous devez modifier les valeurs des cellules sans déclencher cet événement, envisagez de définir Application.Activer les événements à Faux d'abord, puis remettez-le à Vrai à la fin de la procédure événementielle.

123456789 Private Sub Worksheet_Change (ByVal Target As Range)MsgBox "Cellules modifiées : " & Target.AddressApplication.EnableEvents = FalsePlage("A2").Valeur = Plage("A2").Valeur + Cible.Cellules.NombreApplication.EnableEvents = TrueFin du sous-marin

Worksheet_SelectionChange (ByVal Target As Range)

Cet événement se déclenche chaque fois que différentes cellules sont sélectionnées avec le réticule de ciblage. Le paramètre Cible représente les nouvelles cellules qui ont été sélectionnées.

Vous pouvez également déclencher cet événement avec du code, c'est-à-dire "Range ("A1").Select". Comme avec Worksheet_Change(), vous devez faire attention à sélectionner d'autres cellules à l'intérieur de cet événement, car vous pouvez provoquer une boucle infinie. Utilisez Application.EnableEvents.

123456789 Private Sub Worksheet_SelectionChange (ByVal Target As Range)Si Target.Address = "$A$1" ThenMsgBox "Curseur en position initiale."Fin siFin du sous-marin

Arrêter une macro en cours d'exécution

Une macro en cours d'exécution peut être interrompue en appuyant sur ESC ou CTRL+PAUSE. Par défaut, une macro interrompue affichera la boîte de dialogue suivante :

En cliquant Finir arrêtera la macro, tandis que Continuer le reprendra. En cliquant Déboguer ouvrira la macro dans l'éditeur VB et concentrera la ligne de code sur laquelle l'exécution a été interrompue. (Dans l'éditeur VB, vous pouvez arrêter ou reprendre la macro à l'aide des boutons Exécuter ou Fin de la barre d'outils.)

Application.EnableCancelKey

Vous pouvez désactiver la possibilité d'arrêter une macro avec ÉCHAP ou CTRL+PAUSE en définissant le Application.EnableCancelKey biens. Cette propriété a trois valeurs possibles :

  • xlInterruption - c'est la valeur par défaut, ce qui fait qu'Excel affiche la boîte de dialogue ci-dessus
  • xlDésactivé - supprime la possibilité d'arrêter une macro en cours d'exécution
  • xlErrorHandler - lors d'une tentative d'interruption, une erreur est renvoyée qui peut être gérée dans le code

Chaque fois que l'exécution du code s'arrête, Excel réinitialise toujours la valeur de Application.EnableCancelKey à xlInterruption.

Une bonne raison d'utiliser cette propriété est la sécurité. Par exemple, si vous aviez une macro qui déprotégeait temporairement des parties de votre classeur, un utilisateur pourrait potentiellement arrêter la macro juste après la déprotection et accéder au contenu que vous n'aviez pas prévu. En définissant Application.EnableCancelKey, vous pouvez désactiver complètement leur capacité à le faire ou gérer leur interruption avec élégance avec un gestionnaire d'erreurs qui protège à nouveau le classeur.

1234567891011 Sub UpdateBaseData (ByVal NewData As Range, ByVal Target As Range)Application.EnableCancelKey = xlDisabledTarget.Worksheet.Unprotect "MyPassword"Cible NewData.CopyTarget.Worksheet.Protect "MyPassword"Application.EnableCancelKey = xlInterruptionFin du sous-marin

Forcer la fermeture d'Excel avec le gestionnaire de tâches Windows

Si la macro s'est bloquée ou si Excel est devenu trop occupé pour accuser réception d'une tentative d'interruption, vous devrez peut-être forcer la fermeture d'Excel lui-même avec le Gestionnaire des tâches Windows. (REMARQUE : si vous procédez ainsi, vous risquez de perdre tout travail non enregistré et de devoir vous fier à une version à récupération automatique de votre classeur.)

  • Ouvrez le gestionnaire de tâches directement en utilisant CTRL+MAJ+ÉCHAP
  • Sélectionnez le "Processusonglet "
  • Développez l'élément "Microsoft Excel" pour afficher tous les classeurs
  • Sélectionnez le classeur que vous souhaitez fermer, puis cliquez sur Tâche finale dans le coin en bas à droite

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

wave wave wave wave wave