Macros - Comment les créer

Décembre 2016
Comme il serait agréable de créer ses propres commandes... De ne plus avoir à exécuter chaque mois une dizaine de manipulations pour créer le même rapport... De pouvoir cliquer sur un bouton ou exécuter un raccourci clavier pour que ce rapport s'imprime automatiquement... Tout cela est possible avec la plupart des tableurs récents, dont Excel et Calc. Il suffit pour cela de créer une macro : un mini-programme qui exécute une tâche répétitive. Les macros sont écrites dans un langage de programmation spécifique. Il s'agit pour Excel de Visual Basic pour Application (VBA) tandis que les macros OOo sont généralement rédigées en OpenOffice.org Basic mais peuvent également être écrites en JavaScript, Python ou BeanShell (Java), auquel cas on parle plutôt de script. Nous n'examinerons dans la suite de cet ouvrage que les macros VBA et OOo Basic.

Fort heureusement, il n'est pas nécessaire d'être programmeur pour créer une macro, car Excel et Calc, comme beaucoup d'autres tableurs, sont dotés d'un enregistreur de macros. Il fonctionne un peu à la manière d'un magnétophone ou magnétoscope, si ce n'est qu'au lieu d'enregistrer du son ou de la vidéo, il enregistre des appuis sur des touches et des actions à la souris. Ce chapitre montre comment créer des macros, les exécuter et les modifier.

Qu'est-ce qu'une macro ?

Une macro est une procédure, c'est-à-dire un ensemble d'instructions qui exécutent une tâche spécifique ou renvoient un résultat. Il existe deux types de procédures :
  • Une sous-routine est une procédure qui exécute une tâche donnée. Son code débute par le mot Sub et se termine par les mots End Sub. Une macro est une procédure de type sous-routine. Dans ce chapitre, les termes routines et sous-routines sont interchangeables.
  • Une fonction est une procédure qui renvoie un résultat. Vous savez sans doute ce que sont les fonctions d'un tableur, comme =SOMME() ou =MOYENNE(). Les langages de programmation comme VBA permettent de créer des fonctions personnalisées utilisables comme si elles étaient intégrées au logiciel. Une fonction commence toujours par le mot Function et se termine par End Function.

Enregistrer une macro

L'enregistreur de macros Excel ou Calc enregistre toutes vos actions au clavier ou avec la souris dans une macro. Lancez-le, effectuez la tâche à automatiser, puis arrêtez-le.
Avant de commencer l'enregistrement d'une macro, mieux vaut vous assurer que toutes les étapes de la tâche vous sont familières. Une bonne pratique consiste à les noter sur une feuille de papier, ou à les effectuer une première fois « à blanc » pour éviter toute surprise.
L'enregistreur de macros enregistre toutes vos actions, y compris les fautes de frappe ou les erreurs. N'enregistrer que ce qui est nécessaire et sans erreur nécessite de bien connaître les différentes étapes à l'avance.
L'ordre des étapes d'enregistrement d'une macro diffère selon le tableur employé, mais la procédure reste toujours comparable. Avant de commencer, il est nécessaire de s'intéresser toutefois aux paramètres liés à une macro.

EMPLACEMENT DE STOCKAGE : MODULES

Comme nous le verrons sous peu, en programmation objet tout (ou presque) est un objet. Un classeur est composé de différents objets : feuilles de calcul, feuilles de graphique (Excel) et modules. Si un classeur contient une procédure, il contient alors un objet Module, contenant du code. L'ensemble des objets d'un classeur est souvent appelé projet. L'éditeur affiche les projets et les objets qui leur sont associés. Quand vous enregistrez un classeur, vous enregistrez en réalité le projet qui contient tous les objets du classeur. Un module ressemble à un document de traitement de texte et se comporte comme lui. Il renferme les instructions qui composent les procédures.
Il est en principe possible de stocker une macro en plusieurs emplacements différents :
  • dans un module du classeur actif ;
  • dans un module générique.

Une macro stockée dans le classeur actif ne peut être exécutée que lorsque ce classeur est ouvert. Vous choisirez cette option pour des macros strictement liées à un classeur précis, comme une macro de création de graphique et de lancement d'impression paramétrée avec soin.

Il existe en revanche un module générique particulier : c'est pour Excel celui situé dans Macros personnalisées et pour Calc dans Mes Macros. Dans les deux cas, il s'agit d'un module dont les procédures sont toujours accessibles à l'ouverture de tout classeur, quel qu'il soit.

Selon le tableur considéré, le nom du module générique diffère. Pour Calc, il se nomme Module1 et est stocké dans le dossier Standard de Mes Macros. Pour Excel, c'est le classeur de macros personnelles, un classeur masqué enregistré dans le dossier XLOuvrir, un sous-dossier du dossier Excel présent sur le disque dur. Ce classeur s'ouvre automatiquement au lancement d'Excel, mais comme il est masqué vous ne vous en apercevez pas. Les macros qu'il contient sont toutefois accessibles depuis tous les autres classeurs.

Le classeur de macros personnelles d'Excel est un fichier nommé Perso.xls. Il se trouve généralement dans le dossier C:WindowsApplication DataMicrosoftExcelXLOuvrir. Veillez à ne jamais le supprimer ni le déplacer accidentellement. Si vous enregistrez souvent des macros, ou si vous enregistrez des macros complexes, sauvegardez de temps en temps son contenu, au cas où.



Excel propose également d'enregistrer une macro dans un nouveau classeur. Cette option est rarement employée, et sert généralement lorsque la création d'un nouveau classeur fait partie du processus de la macro.
Ajouter un module
Lorsque le nombre de procédures ira en augmentant, vous souhaiterez probablement réorganiser les procédures et ajouter un ou plusieurs nouveaux modules à un projet. Vous voudrez peut-être placer toutes les fonctions dans un seul module et les sous-routines dans un autre. Il sera ainsi plus facile de trouver chacune des procédures recherchées dans l'éditeur. Pour ajouter un nouveau module, procédez comme suit :

Avec Excel

  • Dans le menu, choisissez Outils > Macro > Visual Basic Editor ou appuyez sur ALT+F11.
  • Dans le menu, cliquez sur Insertion > Module.

Avec Calc

  • Dans le menu, choisissez menu Outils > Macros > Gérer les macros > OpenOffice.org Basic (Calc).
  • Cliquez sur Gérer. La fenêtre Gestion des macros d'OpenOffice.org Basic s'affiche.
  • Déplacez-vous dans l'arborescence de gauche à l'emplacement où vous voulez créer un nouveau module, puis cliquez sur Nouveau.
  • Saisissez le nom du nouveau module, puis cliquez sur OK. Vous pouvez fermer les autres fenêtres.

Renommer un module

Lorsqu'un projet comporte plusieurs modules (par exemple parce que vous en avez ajouté), vous pourrez souhaiter modifier le nom d'anciens modules. Voici comment renommer un module :

Avec Excel

  • Ouvrez l'éditeur VBA.
  • Sélectionnez le module à nommer dans l'Explorateur de projet. Il doit se trouver dans le dossier Modules, sous le projet qui le contient.
  • Cliquez sur l'en-tête de propriété (Name) ou double-cliquez sur son nom par défaut à côté de la propriété Name, dans la fenêtre Propriété.
  • Saisissez le nouveau nom et appuyez sur ENTREE.

Avec Calc

  • Choisissez Outils > Macros > Gérer les macros > OpenOffice.org Basic puis cliquez sur Gérer ou cliquez sur l'icône de sélection du module de l'EDI Basic pour ouvrir la boîte de dialogue Gestion des macros.
  • Cliquez à deux reprises sur le module à renommer, en marquant une pause entre les deux clics. Indiquez le nouveau nom.
  • Dans l'EDI Basic, cliquez avec le bouton droit de la souris sur le nom du module ou de la boîte de dialogue figurant dans l'un des onglets situés en bas de l'écran, choisissez Renommer et saisissez le nouveau nom.
  • Appuyez sur ENTREE pour confirmer la modification.

Supprimer un module

Si vous avez ajouté un module par erreur, ou si vous voulez le supprimer pour quelque raison que ce soit, exécutez les opérations suivantes :

Avec Excel

  • Ouvrez l'éditeur VBA.
  • Dans la fenêtre Explorateur de projet, cliquez avec le bouton droit de la souris sur le module à supprimer.
  • Choisissez Supprimer <nom du module> dans le menu contextuel.
  • Cliquez sur Non quand il vous est demandé s'il faut exporter le module avant de le supprimer.

À SAVOIR

L'éditeur VBA permet d'exporter un module, c'est-à-dire de l'enregistrer avec tout son code. Ce faisant, vous pourrez l'importer dans un autre classeur car, en important et en exportant, vous copiez un ensemble de procédures entre classeurs.

Avec Calc

  • Choisissez Outils > Macros > Gérer les macros > OpenOffice.org Basic et cliquez sur Gérer ou cliquez sur l'icône de sélection du module de l'EDI Basic pour ouvrir la boîte de dialogue Gestion des macros.
  • Cliquez sur l'onglet Modules ou Boîtes de dialogue.
  • Sélectionnez le module ou la boîte de dialogue à supprimer de la liste. Le cas échéant, double-cliquez sur une entrée afin d'afficher ses sous-entrées.
  • Cliquez sur Supprimer.


La suppression définitive d'un module entraîne celle de toutes les procédures et fonctions qu'il renfermait.


NOM DE MACRO

Un nom de macro peut contenir des lettres, des chiffres, le caractère de soulignement, mais jamais d'espace. Il doit commencer par une lettre et sa longueur ne doit pas dépasser 64 caractères. Essayez de choisir des noms courts et évocateurs.

ASTUCE : RACCOURCI CLAVIER

Il est souvent possible d'affecter un raccourci clavier à une macro. Les raccourcis clavier des macros prennent le pas sur ceux du programme. Généralement, la plupart des combinaisons de touches CTRL+lettre sont déjà affectées. Mieux vaut retenir CTRL+MAJ+lettre afin d'éviter toute confusion.

MACRO ABSOLUE OU RELATIVE

Une macro peut être absolue ou relative.
Si vous sélectionnez une zone ou une cellule précise après avoir lancé l'enregistrement, la macro s'exécutera de même et appliquera vos instructions à ou à partir de cette cellule ou plage précise, sans modification possible : c'est une macro absolue. Procédez ainsi lorsque vous voulez absolument que la macro affecte la même cellule, comme placer une date dans la cellule A1.
Si vous sélectionnez la cellule ou plage avant de lancer la macro, le processus de sélection ne sera pas enregistré dans la macro et celle-ci s'exécutera sur ou à partir de la zone active, quelle qu'elle soit : c'est une macro relative. Excel permet en outre de créer des macros totalement relatives : si vous sélectionnez une plage au cours de l'enregistrement, celle-ci est référencée relativement par rapport à la cellule initialement active, contrairement à ce qui se passe dans une macro absolue (par défaut).
Les macros relatives sont beaucoup plus polyvalentes.

LANCER L'ENREGISTREMENT

Pour enregistrer une macro avec Excel, procédez comme suit :
  • Choisissez Outils > Macro > Nouvelle macro. Cela ouvre la boîte de dialogue Enregistrer une macro.
  • Saisissez un nom dans la boîte Nom de la macro.
  • Sélectionnez l'emplacement de stockage pour la macro dans la zone de liste déroulante Enregistrer la macro dans (par défaut, une nouvelle macro est stockée dans le classeur courant).
  • Saisissez éventuellement dans la boîte Description un bref descriptif de l'action qu'exécute la macro.
  • Vous pouvez également affecter un raccourci clavier à la macro, en entrant la lettre à employer dans la boîte Touche de raccourci.
  • Cliquez sur OK pour fermer cette boîte de dialogue.


Pour enregistrer une macro avec Calc, procédez comme suit :
  • Choisissez Outils > Macro > Enregistrer une macro. Les étapes de choix du nom, de l'emplacement de stockage, etc., ne seront effectuées qu'à la fin de l'enregistrement.

Avec Excel, la barre d'état affiche le mot Enregistrement et la barre d'outils Arrêt de l'enregistrement apparaît. Avec Calc, cette barre d'outils se nomme Enregistrement.

Ne fermez surtout pas cette barre d'outils ! Avec Calc, cela met fin à l'enregistrement et vous perdez tout. Avec Excel, l'enregistrement se poursuit, presque à votre insu. Vous devrez choisir Outils > Macro > Arrêt de l'enregistrement pour arrêter l'enregistrement.
Avec Excel, pour enregistrer la macro relativement, cliquez sur le bouton Référence relative, sur la barre d'outils Arrêt de l'enregistrement.
Effectuez chronologiquement chacune des tâches qui doivent être enregistrées. Une fois les tâches accomplies, cliquez sur le bouton Arrêt de l'enregistrement (Excel) ou Terminer l'enregistrement (Calc).

Il est facile d'oublier qu'un enregistrement est en cours. Celui-ci se poursuivant jusqu'à son arrêt explicite, il est capital que vous arrêtiez l'enregistrement dès que les tâches à enregistrer le sont. Si vous avez oublié d'arrêter l'enregistrement d'une macro à temps, vous n'avez pas à tout enregistrer à nouveau : il suffira d'éditer la macro et de supprimer les actions superflues. Nous verrons comment procédez sous peu.



Avec Calc, c'est à ce moment que vous devrez spécifier le lieu d'enregistrement de la macro (module standard générique ou module du classeur actif) et lui attribuer un nom. Il convient d'examiner un peu mieux ce qu'est un module.

EXEMPLE PRATIQUE : CREATION D'UNE MACRO D'AJUSTEMENT AUTOMATIQUE D'UNE COLONNE

Vous allez créer ici une petite macro qui ajuste automatiquement la colonne active de la feuille de calcul active, puis sélectionne la cellule A1. Elle sera nommée AjustCol (ou tout autre nom de votre choix) et stockée dans le module générique afin d'être accessible depuis n'importe quel classeur.
1. Assurez-vous que la cellule A1 est visible à l'écran.
2. Lancez l'enregistrement d'une nouvelle macro, selon la procédure exposée ci-dessus.
3. Appuyez sur CTRL+A pour sélectionner la totalité du tableau.
4. Choisissez Format > Colonne > Ajustement automatique (Excel) ou Format > Colonne > Largeur optimale (Calc).
5. Sélectionnez la cellule A1 dans la feuille courante.
6. Arrêtez l'enregistrement de la macro.
Souvenez-vous que vous nommez avec Excel la macro et choisissez son lieu de stockage avant le lancement de l'enregistrement, tandis qu'avec Calc c'est après avoir arrêté l'enregistrement.

Enregistrez toujours le classeur qui contient une macro avant de la tester. Si elle contient des erreurs, vous risqueriez en effet de perdre des données lors de son exécution. Si vous constatez la perte de données après l'exécution, fermez le classeur sans l'enregistrer, puis rouvrez-le, ce qui restaurera les données d'origine.



7. Testez maintenant la nouvelle macro. Saisissez dans une colonne quelconque un texte ou chiffre excédant sa largeur, puis :
avec Calc, sélectionnez dans le menu Outils > Macro > Exécuter une macro, puis sélectionnez la macro concernée (vous pourriez avoir à naviguer un peu) ;
avec Excel, sélectionnez dans le menu Outils > Macro > Macros, puis sélectionnez la macro concernée dans la liste.
8. Cliquez sur Exécuter : toutes les colonnes s'ajustent automatiquement, et le texte ou le nombre que vous aviez saisi s'affiche maintenant dans son intégralité.

A voir également :

Ce document intitulé «  Macros - Comment les créer  » 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.