Exécuter une macro

Décembre 2016

Exécuter une macro


Excel et Calc proposent plusieurs façons d'exécuter une macro :
  • en la sélectionnant dans une liste, dans la boîte de dialogue Macro ;
  • par un raccourci clavier ;
  • en l'attachant à un bouton de la barre d'outils ;
  • en l'affectant à un événement ;
  • en l'affectant à un objet graphique ;
  • en l'affectant à un menu.

Chaque méthode possède ses avantages et ses inconvénients. Il n'est pas possible d'émettre de recommandation absolue. Si le classeur est réservé à votre utilisation personnelle, sélectionnez la méthode qui vous convient le mieux. Si vous concevez un classeur destiné à être employé par d'autres, essayez de vous informer sur leur niveau de connaissance du tableur, ainsi que sur leurs préférences. Si ce sont des utilisateurs occasionnels ou inexpérimentés, préférez les menus. S'ils connaissent bien le tableur ou s'ils s'en servent intensivement, placez chaque macro sur une barre d'outils et affectez un raccourci clavier à chacune.
L'exécution d'une macro depuis la boîte de dialogue Macro est la méthode qui nécessite le moins d'efforts, mais c'est également la moins pratique. Elle sert surtout lors du test d'une macro. Vous avez déjà vu comment vous en servir lors de l'exemple pratique précédent :
  • Avec Calc, vous sélectionnez dans le menu Outils > Macro > Exécuter une macro, puis vous sélectionnez la macro concernée, en ayant éventuellement à naviguer un peu.
  • Avec Excel, vous sélectionnez dans le menu Outils > Macro > Macros, puis sélectionnez la macro concernée dans la liste.
  • Vous cliquez ensuite sur Exécuter ou appuyez sur la touche ENTREE, l'option Exécuter étant celle active par défaut.

Affecter une macro au Ruban


Vous pourriez souhaiter créer sur le Ruban un nouvel onglet ou un nouveau groupe dans un onglet existant pour y rassembler vos macros. Cela est possible, grâce aux possibilités de personnalisation du Ruban d'Excel 2010. La démarche est similaire à l'affectation d'une macro à la barre d'outils Accès rapide, à quelques détails près :
1.Cliquez sur l'onglet Fichier.
2.Cliquez sur Personnaliser le Ruban.
3.Dans la liste Choisir les commandes dans les catégories suivantes, sélectionnez Macros.
4.Dans la partie de droite, cliquez sur Nouvel onglet pour créer un nouvel onglet, sélectionnez un onglet et cliquez sur Nouveau groupe pour ajouter un groupe, ou cliquez sur le groupe dans lequel vous voulez ajouter la macro. Si vous avez créé un onglet ou un groupe, vous souhaiterez cliquer sur Renommer pour personnaliser son nom.
5.Dans la liste, cliquez sur la macro que vous avez créée, puis sur Ajouter.
6.Pour modifier l'image du bouton de la macro, sélectionnez la macro dans la zone où elle a été ajoutée, puis cliquez sur Modifier.
7.Sous Symbole, cliquez sur l'image du bouton que vous souhaitez utiliser.
8.Pour modifier le nom de la macro qui s'affiche lorsque vous positionnez le pointeur sur le bouton, dans la zone Nom complet, tapez le nom que vous souhaitez utiliser.
9.Cliquez sur OK pour ajouter le bouton de macro dans le groupe sélectionné.


Dans cet exemple, j'ai ajouté la macro AjustCol à un nouveau groupe Mes macros de l'onglet Développeur.

AFFECTER UNE MACRO A UN RACCOURCI CLAVIER


Vous pouvez également exécuter une macro à l'aide d'un raccourci clavier. Excel permet d'affecter un raccourci clavier à une macro lors de son enregistrement, comme nous l'avons vu précédemment.
Vous pourriez toutefois souhaiter en affecter un par la suite, ou modifier le raccourci précédent : pratiquement tous les tableurs permettent d'affecter un raccourci clavier à une macro. Voici comment procéder :

Avec Excel

  • Choisissez Outils > Macro > Macros ou appuyez sur CTRL+F8.
  • Sélectionnez dans la liste la macro devant recevoir un raccourci clavier.
  • Cliquez sur le bouton Options pour afficher la boîte de dialogue Options de macro.
  • Appuyez sur les touches correspondant au raccourci clavier désiré.

À SAVOIR


Avec Excel, vous n'avez pas à appuyer sur la touche CTRL quand vous entrez la combinaison de touches d'un raccourci clavier. Appuyez seulement sur les touches complémentaires. Par exemple, pour affecter CTRL+MAJ+P à une macro, appuyez simplement sur MAJ+P.
  • Cliquez sur OK, puis fermez la boîte de dialogue Macro.

Avec Calc
  • Choisissez Outils > Personnaliser, et cliquez sur l'onglet Clavier.
  • Dans la zone de liste Catégorie, faites défiler les éléments vers le bas et ouvrez l'entrée Macros OpenOffice.org.
  • Les éléments suivants s'affichent : entrées pour les macros OpenOffice.org (scripts se trouvant dans le répertoire partagé de votre installation de OpenOffice.org), mes macros (scripts se trouvant dans le répertoire d'utilisateur) et document actif. Pour connaître les langages de script pris en charge, ouvrez l'un de ces éléments.
  • Pour afficher les scripts disponibles, ouvrez une entrée de langage de script. Sélectionnez un script de votre choix.
  • Une liste des fonctions de scripts apparaît dans la zone de liste Fonctions. Sélectionnez la fonction de votre choix.
  • Cliquez sur le bouton radio d'OpenOffice.org ou de Calc, ou de toute application ouverte. En sélectionnant le bouton radio, vous définissez le champ d'action de la nouvelle combinaison de touches devant être appliquée à tous les documents OpenOffice.org ou uniquement aux documents du module actif.
  • Dans la zone de liste Raccourcis clavier, sélectionnez une combinaison de touches et cliquez sur Modifier.
  • Choisissez Outils > Macros > Gérer les macros > OpenOffice.org Basic.
  • Sélectionnez dans la liste la macro devant recevoir un raccourci clavier.
  • Cliquez sur Assigner. Cela ouvre la boîte de dialogue Personnaliser.
  • Dans la section Raccourci clavier de la fenêtre Personnaliser, sélectionnez un raccourci clavier disponible. Dans la section Fonction du bas, naviguez dans la zone Catégorie jusqu'au module qui contient votre macro. Sélectionnez-la dans la zone Fonction, puis cliquez sur Modifier : le raccourci précédemment sélectionné apparaît dans la zone Clavier.
  • Cliquez sur OK, puis fermez la boîte de dialogue Macros.

AFFECTER UNE MACRO A UNE BARRE D'OUTILS OU A UN MENU


Globalement, barres d'outils et menus sont équivalents : les deux sont composés de boutons regroupés, dont seule l'apparence diffère. La procédure d'affectation de macros à ces deux éléments est identique avec Excel et similaire

avec Calc.


Affecter une macro à un menu ou à une barre d'outils facilite son exécution et permet de la retrouver rapidement. Procédez comme suit pour attacher une macro :

Avec Excel

  • Cliquez avec le bouton droit de la souris sur n'importe quel bouton de barre d'outils ou commande de menu.
  • Choisissez Personnaliser dans le menu contextuel pour ouvrir la boîte de dialogue Personnaliser.
  • Choisissez l'onglet Commandes, puis sélectionnez Macros dans la liste Catégories.
  • Pour ajouter un nouveau bouton à la barre d'outils, faites glisser le Bouton personnalisé de la liste Commandes jusqu'à l'emplacement souhaité sur une barre d'outils existante, puis déposez-le.
  • Pour ajouter une nouvelle commande de menu, faites glisser l'Élément de menu personnalisé dans un menu existant. Si, par exemple, vous voulez le placer dans le menu Fichier, tirez l'élément au-dessus du menu Fichier. Ne relâchez pas encore le bouton de la souris ! L'intégralité du menu Fichier se déploie : faites glisser l'élément jusqu'à ce qu'il se trouve là où vous voulez qu'il soit placé et relâchez alors le bouton de la souris. Si vous aviez accidentellement ouvert un menu erroné, il suffirait de continuer à déplacer l'Élément de menu personnalisé jusqu'au menu correct et de l'y positionner.
  • Cliquez avec le bouton droit de la souris sur le nouveau bouton ou sur la nouvelle commande et choisissez Affecter une macro dans le menu contextuel.
  • Sélectionnez dans la liste de la boîte de dialogue Affecter une macro celle que vous voulez affecter au bouton ou à la commande.
  • Cliquez sur OK, puis fermez la boîte de dialogue Personnaliser.

Une infobulle peut être affectée à un bouton de barre d'outils. Le nom que vous donnerez au bouton y apparaîtra. Il sert également de texte de bouton si vous choisissez l'option d'affichage en mode texte. Voici comment affecter un nom à un bouton de barre d'outils ou à une commande de menu :
  • Cliquez avec le bouton droit de la souris sur n'importe quel bouton de barre d'outils ou de menu et choisissez Personnaliser dans le menu contextuel.
  • Cliquez avec le bouton droit de la souris sur le bouton ou sur la commande à laquelle la macro a été affectée. Dans le menu contextuel qui en résulte, tapez un nom pour la commande dans la boîte Nom. Il doit être aussi court que possible : les noms longs sont peu adaptés aux infobulles ou à un affichage du bouton en mode texte.

À SAVOIR


Dans la boîte Nom, le « et commercial » (&) indique où apparaîtra le caractère souligné de la commande. De ce fait, si la nouvelle commande s'appelle Ajuster col et que le « j » doive être souligné, vous taperez A&juster col dans la boîte de saisie Nom.
Le soulignement est un pense-bête qui rappelle que la commande peut être lancée à partir du clavier en maintenant la touche ALT enfoncée et en tapant la lettre soulignée (comme ALT+F déploie le menu Fichier). Cette fonctionnalité assure une homogénéité avec les autres menus d'Excel.

<warningWAvant d'affecter un soulignement à une nouvelle commande, assurez-vous que votre choix n'entre pas en conflit avec la même lettre d'une autre commande du même menu. Si deux commandes contiennent la même lettre, Excel passe de l'une à l'autre. Il vous faut alors appuyer sur la commande ENTREE pour exécuter la commande.</warning>
  • Appuyez sur ENTREE pour valider le nouveau nom, puis fermez la boîte de dialogue Personnaliser.

Excel permet de contrôler le mode d'affichage du bouton ou de la commande sur la barre d'outils ou dans le menu. Vous pouvez afficher une image, un texte ou les deux pour la barre d'outils aussi bien que pour le menu. Pour changer l'affichage d'un bouton ou celui d'un menu, utilisez le menu contextuel qui apparaît lorsque vous cliquez à l'aide du bouton droit de la souris sur l'élément de menu personnalisé ou sur le bouton, la boîte de dialogue Personnalisée étant bien sûr ouverte.

Le tableau suivant présente les différentes commandes d'affichage.

Options d'affichage des boutons de barre d'outils et des commandes de menus


Option d'affichage Sur une barre d'outils Dans un menu
Par défaut L'image seulement L'image et le nom
Texte seul pour ce bouton Le nom seulement Le nom seulement
Masquer les images sur les menus L'image seulement Le nom seulement
Image et texte L'image et le nom L'image et le nom

ASTUCE


Réservez les images aux boutons de barre d'outils à usage personnel. Si la barre d'outils appartient à un classeur employé par d'autres personnes, mieux vaut afficher du texte à la place ou en sus des images.
Pour changer l'image d'un bouton, procédez comme suit :
  • Cliquez à l'aide du bouton droit de la souris sur n'importe quelle barre d'outils ou sur un menu.
  • Choisissez Personnaliser.
  • Choisissez Modifier l'image du bouton.
  • Sélectionnez une image dans le catalogue.
  • Fermez la boîte de dialogue Personnaliser.

Procédez comme suit pour modifier les options d'affichage d'un bouton de barre d'outils ou d'une commande de menu :
  • Cliquez à l'aide du bouton droit de la souris sur n'importe quel bouton de barre d'outil.
  • Choisissez Personnaliser.
  • Cliquez à l'aide du bouton droit de la souris sur le bouton auquel la macro doit être affectée.
  • Choisissez l'une des options d'affichage dans le menu contextuel.
  • Fermez la boîte de dialogue Personnaliser.

Avec Calc

  • Choisissez Outils - Personnaliser et cliquez sur l'onglet Menus.
  • Cliquez sur Ajout de commandes.
  • Dans la zone de liste Catégorie, faites défiler les éléments vers le bas et ouvrez l'entrée Macros OpenOffice.org.
  • Les éléments suivants s'affichent : entrées pour les macros OpenOffice.org (scripts se trouvant dans le répertoire partagé de votre installation de OOo), Mes macros (scripts se trouvant dans le répertoire d'utilisateur) et document actif. Pour connaître les langages de script pris en charge, ouvrez l'un de ces éléments.
  • Pour afficher les scripts disponibles, ouvrez une entrée de langage de script. Sélectionnez un script.
  • Une liste des fonctions de scripts apparaît dans la zone de liste Fonctions. Sélectionnez une fonction.
  • Pour créer une assignation de menu, cliquez sur Nouveau. La nouvelle entrée vient s'ajouter à la zone de liste Entrées de menu. Cliquez sur l'entrée de menu et attribuez-lui un nouveau nom.

Pour ajouter un élément à une barre d'outils, la démarche est analogue, si ce n'est que vous sélectionnez à la première étape l'onglet Barre d'outils.
Vous pourriez souhaiter créer un nouveau menu ou une nouvelle barre d'outils pour y rassembler vos macros. Cela est possible avec la majorité des tableurs, dont Excel et Calc, qui permettent une personnalisation de ces éléments. Reportez-vous à leur documentation pour les détails de mise en oeuvre.

À SAVOIR


N'importe quel menu ou barre d'outils d'Excel et de Calc peut être édité, modifié ou supprimé.

AFFECTER UNE MACRO A UN OBJET GRAPHIQUE


Une autre méthode d'exécution est via un objet graphique. Le plus courant de ces objets est un bouton, mais on peut affecter des macros à la plupart de ceux créés avec les barres d'outils Dessin et Formulaires.
Affecter une macro à un bouton avec Excel
  • Affichez si elle ne l'est pas la barre d'outils Formulaires en choisissant Affichage > Barres d'outils > Formulaires. La barre d'outils correspondante apparaît.
  • Sélectionnez l'outil Bouton dans la barre d'outils.
  • Déplacez la souris à l'endroit où le bouton doit apparaître, puis tirez en diagonale. Relâchez le bouton de la souris une fois que le bouton dessiné est comme voulu. (Pour créer un bouton à sa taille par défaut, il suffit de cliquer plutôt que de tirer.)
  • Sélectionnez la macro à affecter dans la liste Nom de la macro.
  • Cliquez sur OK.
  • Modifiez le nom du bouton en lui donnant un nom évocateur pour la macro.
  • Cliquez sur n'importe quelle cellule de la feuille de calcul courante pour désélectionner le bouton. Il devient actif au moment où il est désélectionné, et exécute la macro quand on clique dessus. Excel transforme le pointeur de la souris en main lorsqu'il se trouve au-dessus d'un bouton actif.

Affecter une macro à un graphisme autre qu'un bouton est analogue, si ce n'est que la boîte de dialogue Affecter une macro n'apparaît pas après le dessin de l'objet graphique, ou à son incorporation s'il s'agit d'une image. Par exemple, pour affecter une macro à un rectangle, dessinez cette figure à l'aide de la barre d'outils Formulaire, cliquez dessus avec le bouton droit de la souris, puis choisissez dans le menu contextuel Affecter une macro. Sélectionnez une macro dans la liste Nom de la macro, puis cliquez sur OK.
Affecter un script à une image ou un dessin avec Calc
La procédure est analogue.
  • Sélectionnez l'image dans votre document.
  • Effectuez dessus un clic droit, puis choisissez Assigner une macro.
  • Sélectionnez et assignez comme indiqué précédemment.

Si un bouton de barre d'outils ou un élément de menu devient superflu, vous pouvez aisément le supprimer. Reportez-vous à la rubrique « Personnaliser » de votre logiciel, mais généralement cela s'effectue depuis la fenêtre Personnaliser en sélectionnant l'élément concerné et en cliquant sur Supprimer.
Vous pourriez trouver cette possibilité dangereuse et craindre de supprimer un élément essentiel, puisqu'il est possible de supprimer tout élément d'un outil ou d'une barre d'outils : rassurez-vous, pratiquement tous les logiciels offrent la possibilité de revenir rapidement aux paramètres par défaut.

AFFECTER UNE MACRO A UN EVENEMENT


Un événement est une occurrence prédéfinie à laquelle vous pouvez attacher du code : ce dernier s'exécutera dès que l'occurrence se produira. Seuls certains événements de certains objets peuvent être associés à une macro. Voici comment attacher du code à un événement :

Avec Calc

  • Choisissez Outils > Personnaliser > Événements.
  • Sélectionnez l'événement dans la liste qui s'ouvre.
  • Cliquez sur Assigner > Macro.
  • Dans la fenêtre Sélecteur de macro, dans la zone de liste Bibliothèque, faites défiler les éléments vers le bas et ouvrez l'entrée OpenOffice.org Macros.
  • Les éléments suivants s'affichent : entrées pour les macros OpenOffice.org (scripts se trouvant dans le répertoire partagé de votre installation d'OpenOffice.org), Mes macros (scripts se trouvant dans le répertoire de l'utilisateur) et document actif. Pour connaître les langages de script pris en charge, ouvrez l'un de ces éléments.
  • Pour afficher les scripts disponibles, ouvrez une entrée de langage de script. Sélectionnez le script ou la macro à assigner.
  • La macro assignée apparaît dans la liste, à côté de l'événement qui avait été sélectionné. Cliquez sur OK.

Avec Excel
Excel est à la fois plus et moins souple en ce domaine que Calc. De façon générale, une procédure associée à un événement porte obligatoirement le nom suivant :
Sub nomobjet_nomévénement

Voici comment créer une telle macro :
  • Ouvrez Visual Basic Editor. Dans la fenêtre Explorateur de projets, déployez l'objet VBAProject du classeur concerné en cliquant sur le signe plus (+) qui se trouve à gauche.
  • Sélectionnez l'objet concerné (vous voyez qu'il peut s'agir d'une feuille ou du classeur lui-même), cliquez avec le bouton droit de la souris et choisissez Code. Cette étape ouvre le module de l'objet.
  • Choisissez dans la liste de droite l'événement concerné. Éliminez si nécessaire le squelette de macro qui avait été précédemment créé.
  • Entrez le code de la nouvelle procédure Sub nomobjet_nomévénement.

Il est fréquent de vouloir exécuter automatiquement une procédure à l'ouverture d'un classeur. Vous sélectionnez alors l'événement Open de l'objet ThisWorkbook, pour créer une procédure Workbook_Open qui démarrera automatiquement à l'ouverture du classeur.

ASTUCE


Pour désactiver l'événement Excel Workbook_Open, maintenez la touche MAJ enfoncée au moment où vous ouvrez le classeur qui le contient.

AFFECTER UNE MACRO A L'EVENEMENT D'UN OBJET INCORPORE


Même si cela est décrit dans la documentation, j'ai été dans l'impossibilité totale d'affecter une macro à un événement d'un objet incorporé (diagramme, son ou vidéo) avec Calc. La commande Format > Objet > Macro n'est pas disponible, même avec la dernière version d'OOo (3.01).
Avec Excel, seuls les objets ActiveX incorporés peuvent voir une procédure liée à un de leurs événements (souvent Click). Après avoir inséré un objet ActiveX, double-cliquez dessus : cela ouvre la fenêtre Code de l'éditeur VBA en affichant le squelette de la procédure objet_Click(). Comme dans le cas précédent, vous pouvez sélectionner un autre événement.
Remarquez qu'un bouton de commande étant un objet ActiveX, vous pourriez procéder ainsi pour affecter une macro à un bouton de commande : copiez le code de la macro figurant entre Sub et End Sub entre les instructions Sub et End Sub objet_Click()

Exécuter une macro lors de l'ouverture du classeur


Il est fréquent de vouloir exécuter automatiquement une procédure à l'ouverture d'un classeur :
1.Si vous souhaitez enregistrer la macro avec un classeur particulier, ouvrez d'abord ce classeur.
2.Sous l'onglet Développeur, dans le groupe Code, cliquez sur Enregistrer une macro.
3.Dans la zone Nom de la macro, tapez Auto_Open.
4.Dans la liste Enregistrer la macro dans, sélectionnez le classeur dans lequel vous souhaitez stocker la macro. Si vous voulez que la macro soit disponible chaque fois que vous utilisez Excel, sélectionnez Classeur de macros personnelles.
5.Cliquez OK, puis exécutez les actions que vous voulez enregistrer.
6.Sous l'onglet Développeur, dans le groupe Code, cliquez sur Arrêter l'enregistrement (ou cliquez sur le bouton Arrêter l'enregistrement à gauche de la barre d'état).
L'enregistrement d'une macro Auto_Open est soumis aux contraintes suivantes :

*
    • Si le classeur dans lequel vous enregistrez la macro Auto_Open contient déjà une procédure VBA dans son événement Open, la procédure VBA pour l'événement Open remplace toutes les actions dans la macro Auto_Open.
    • Une macro Auto_Open est ignorée lorsqu'un classeur est ouvert par le biais du code à l'aide de la méthode Open.
  • Une macro Auto_Open s'exécute avant l'ouverture des autres classeurs. Par conséquent, si vous enregistrez des actions que vous souhaitez qu'Excel réalise dans le classeur Book1 par défaut ou dans un classeur chargé à partir du dossier XLStart, la macro Auto_Open échoue lorsque vous relancez Excel car la macro s'exécute avant l'ouverture des classeurs par défaut et de démarrage.

Si ces contraintes vous posent problèmes, plutôt que d'enregistrer une macro Auto_Open, vous devez créer une procédure VBA pour l'événement Open comme cela est décrit dans une section ultérieure.

A savoir


Pour désactiver l'événement Excel Workbook_Open, maintenez la touche Maj enfoncée au moment où vous ouvrez le classeur qui le contient.

Affecter une macro à un objet ActiveX


Il est possible d'affecter une macro à un objet ActiveX, en réalité à un de ses événements, le plus souvent Click. Un événement est une occurrence prédéfinie à laquelle vous pouvez attacher du code : ce dernier s'exécutera dès que l'occurrence se produira. Seuls certains événements de certains objets peuvent être associés à une macro : c'est le cas des objets ActiveX, également nommés contrôles.
Les objets ActiveX sont disponibles via l'option Insérer du groupe Contrôles de l'onglet Développeur. Choisissez un contrôle en cliquant dessus et insérez-le sur votre feuille de calcul : la boîte de dialogue Affecter une macro s'ouvre automatiquement, proposant une nouvelle macro nommée par défaut contrôle_Cliquer. Nous n'allons pas choisir cette macro (qu'il faudrait rédiger) pour le moment : sélectionnez une macro existante dans la liste (Ajustcol est normalement la seule, sauf si vous avez enregistré d'autres macros).

Le texte original de cette fiche pratique est extrait de
«Tout pour bien utiliser Excel 2010» (Fabrice LEMAINQUE, Collection CommentCaMarche.net, Dunod, 2010)

A voir également :

Ce document intitulé «  Exécuter une macro  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.