Ou les macros peuvent-elles être stockées ?

Selon les cas, les macros peuvent être stockées à tel ou tel endroit, selon l'usage que l'on veut en faire. En fait, il est très intéressant de savoir ou les macros sont stockées dans le cas ou on emporte un classeur sur disquette (les macros vont-êlles suivre ?), ou qu'on envoie un fichier .XLS par E-Mail (Même commentaire), ou si on désire qu'une ou plusieurs Macros ne soient utilisable qu'avec tel ou tel fichier. Dans tous les cas, quel que soit l'endroit ou on désire enregistrer ou écrire la macro, il FAUT que le fichier dans lequel on veut la mettre soit ouvert (Qu'il soit automatiquement ouvert, masqué ou non, peu importe, mais ouvert de toutes façons).

Vous allez rapidement vous rendre compte que ce n'est pas évident de s'y retrouver avec tous ces fichiers et ces dossiers. En plus, selon la version de Windows et d'Office que vous avez, les références peuvent également changer. Vous voilà prévenus...

Dans le classeur courant

Le fait de stocker une macro dans le classeur courant la rendre accessible seulement lorsque vous êtes dans ce classeur. Attentioin toutefois, si vous avez plusieurs classeurs ouverts et que la macro se touve dans Classeur1, et que en fait vous êtes dans classeur2, alors, avec Outils/Macros/Macros, vous aurez Accès aux macros de Classeur1.

Attention Toutefois (C'est compliqué) : admettons que vous êtes dans le classeur Classeur1.XLS, et que vous enregistrez une Macro "Macro1" dans ce calsseur Classeur1.XLS, et que vous attachez cette macro à une icône d'une barre d'outils personnalisée que vous avez créé préalablement (avec Affichage/Barre d'outils/Personnaliser), vous pourriez imaginer que si vous enregistrez Classeur1.XLS et que vous fermez Excel, quand vous allez revenir dans Excel, soit la barre d'outils personnalisée que vous aviez créé quand vous étiez dans Classeur1.XLS aura disparu, soit, si elle n'a pas disparu, l'icône qui appelle une macro de Classeur1.XLS ne fonctionnera plus tant que vous n'ouvrez pas Classeur1 ... ET BIEN NON : Excel, dès que vous cliquerez sur le bouton qui appelle Macro1 de Classeur1.XLS, ouvrira (discrètement) Classeur1.XLS pour récupérer et exécuter Macro1. Bien entendu, si entretemps vous avez supprimé Classeur1, ou déplacé, ou renommé, alors évidemment, Excel vous dira qu'il ne trouve plus la macro !

Donc méfiez-vous des barres d'outils qui appellent des macros "locales" au classeur dans lequel vous êtes ! Dans ce cas de figures, moi, je trouve que ce serait bien d'afficher automatiquement la barre d'outils du classeur local lors de l'ouverture. Voici un exemple de code utilisant les procédures auto_open() et auto_close() pour montrer ou masquer une barre d'outils qui s'appellerait MacrosLocales, et qui contiendrait des boutons qui appellent des macros se trouvant dans l'actuel fichier XLS :

Sub auto_open()
  CommandBars("MacrosLocales").Visible = True
End Sub

Sub auto_close()
  CommandBars("MacrosLocales").Visible = False
End Sub

Comme auto_open s'exécute automatiquement à l'ouvertuire du classeur et auto_close à sa fermeture, le tour est joué ! Cliquez ici pour de plus amples informations sur ces deux procédures

Dans le classeur de macros personnelles PERSO.XLS (Classeur masqué par défaut)

Le classeur de macros personnelles s'appelle en réalité PERSO.XLS. C'est un nom de fichier réservé. Il s'agit d'un fichier masqué qui est créé dès la première fois qu'on enregistre une macro dans le classeur de macros personnelles. PERSO.XLS s'enregistre automatiquement dans le dossier de démarrage par défaut d'Excel. Dans le chapitre suivant j'en dis plus sur le dossier de démarrage par défaut, notamment comment le troiuver.

Voici la marche à suivre pour créer le classeur de macros PERSO.XLS : Il suffit d'enregistrer une macro idiote dedans :

  1. Allez dans Excel
  2. Faites Outils/Macros/Nouvelle Macro
  3. Nom de la macro : Laissez Macro1
  4. Enregistrer la macro dans : "Classeur de macros personnelles"
  5. Cliquez dans une cellule quelconque de votre feuille de calcul (Juste histoire de faire quelque chose dans la macro)
  6. Outils/Macros/Arrêter l'enregistrement
  7. Quittez Excel
  8. Enregistrer Classeur1 ? NON
  9. "Voulez-vous enregistrer les modifications apportées au classeur de macros personnelles" : OUI

Voilà. Maintenant, vous SAVEZ que PERSO.XLS existe, et qui se trouve dans le dossier de démarrage par défaut d'Excel. Pour le trouver, cliquez sur le bouton Démarrer de Windows, Rechercher/Fichiers ou Dossiers, et recherchez PERSO.XLS sur tout votre ordinateur. Vous verrez ainsi ou il se trouve. Retenez-le, ça pourra vraiment vous être utile

PERSO.XLS ne commence a exister qu'a partir du moment ou on y installa la première macro. Il est placé dans ce qu'Excel appelle un "Dossier de démarrage". C'est quoi ? Et bien, Excel va ouvrir automatiquement tous les fichiers .XLS qui sont dans ce dossier à chaque ouverture d'Excel. S'il y a 50 fichiers .XLS, Excel les ouvre les 50.

Et ou est placé de dossier de démarrage ? Ce n'est pas très clair : On aurait bien aimé le savoir en allant dans Outils/Options, mais rien. En fait, dans Outils/Options, on trouve bien un endroit "Autre dossier de démarrage", mais ce n'est pas celui-là. Nous allons donc ruser. Je vous ai dit que PERSO.XLS existait à partir du moment ou on créait une première macro. Marche à suivre :

  1. Créez une macro toute bête : Outils/Macros/Nouvelle Macro
  2. Comme nom, donnez lui : Test
  3. Enregistrez la macro dans : "Classeur de macros personnelles" (Perso.XLS donc.)
  4. Ecrivez "Machin" dans n'importe quelle cellule, faites ENTER, et arrêtez la macro
  5. Quitez Excel. En quittant, Excel va donc vous demander si vous voulez enregistrer votre fichier actuel, vous pouvez dire non, mais, surtout, il va vous demander si vous voulez enregistrer votre "Classeur de macros personnelles". Et dites oui, bien sûr.
  6. Maintenant, pour trouver ce satané "PERSO.XLS", il suffit de faire Démarrer/Rechercher/Fichiers ou dossiers, et rechercher PERSO.XLS sur tous vos disques. Si vous travaillez sous Windows 95,98 Vous allez le dénicher dans un sous dossier du dossier ou vous avez installé Excel, et sous Windows 2000, dans un obscur sous-dossier de Application Data.(Dans mon cas : C:\Documents and Settings\Michel.PIII500\Application Data\Microsoft\XLStart\PERSO:XLS.)

A partir de maintenant, à chaque ouverture d'Excel, il va continuer a vous afficher une feuille de calcul blanche, mais, en plus, il va ouvrir PERSO.XLS en tant que Fichier masqué ! C'est à dire que vous ne le verrez pas, mais il est bien présent. Pour s'en convaincre, faites Outils/Macros/Macros. Dans la liste, vous devriez constater la macro PERSO.XLS!MacroGenerale. Ca veut dire que MacroGenerale se trouve effectivement bien dans PERSO.XLS.

Si vous voulez faire plus de tests, essayez de quitter Excel, et d'aller détruire PERSO.XLS dans l'explorateur Windows. Quand vous reviendrez dansExcel, MacroGenerale aura disparu.

Un autre test consisterait à rendre visible PERSO.XLS. Il suffit d'aller dans Fenêtre/Afficher, et de demander l'affichage de PERSO.XLS. Vous verrez un simple fichier vide, mais qui contient MacroGenerale. ATTENTIOn : Si vous faites ce test, ne sauvegardez pas votre PERSO.XLS, parce qu'il serait sauvegardé en Affiché, et pas Masqué, ce qui lui fait perdre tout son intérêt. On n'a pas besoin de le VOIR, on a besoin qu'il nous mette discrètement ses macros à disposition tout le temps.

Dans un classeur .XLS se trouvant dans le dossier de démarrage par défaut d'Excel

Il existe un endroit sur votre disque dur qui est le dossier de démarrage par défaut d'Excel. Ce dossier de démarrage peut changer avec les versions d'Excel et de Windows. Avant Windows 2000, il me c'était un dossier qui s'appelait XLOUVRIR, et qui est un sous dossier qui se trouve dans le dossier d'installation d'Office. Avec Windows 2000, ce dossier se trouve plutôt dans les données de configuration personnelle (Dans mon cas : C:\Documents and Settings\NomDeMonOrdinateur\Application Data\Microsoft\Office\XLSTART).

En deux mots, pour retrouver ou se trouve votre dossier de démarrage par défaut, il suffit de rechercher PERSO.XLS (Voir chapitre précédent)

Dans un classeur .XLS se trouvant dans "Autre dossier de démarrage"

Allez dans Outils/Options/General : Dans la zone "Autre dossier de démarrage", vous pouvez spécifier un nom de dossier (pas un nom de fichier, mais bien de dossier. Exemple : d:\docs\Config\Excel). Tous les fichiers .XLS qui se trouvent dans ce dossier seront chargés au démarrage d'Excel, qu'ils soient masqués ou pas

S'il n'y a aucun fichier, alors, un classeur vide apparaître simplement au démarrage d'Excel. S'il y en a un, il prend la place de ce classeur vide, et s'il y en à plus, ils sont chargés les uns derrière les autres.

Une astuce intéressante consisterait à sauvegarder un fichier .XLS masqué dans cet autre dossier de démarrage, et d'y installer des macros. Dans le cas ou vous avez un fichier .XLS masqué dans ce dossier, Excel vous donnera encore un classeur vide au démarrage d'Excel (pour vous éviter d'avoir un Excel tout gris sans classeur visible pour travailler au démarrage)

Ce dossier pourrait sembler faire double emploi avec le dossier de démarrage par défaut d'Excel, mais en fait, on pourrait imaginer que votre dossier de démarrage par défaut se trouve sur votre ordinateur, et personne n'y a accès à part vous, et l'autre dossier de démarrage pourrait se trouver sur un lecteur de disque réseau, partageable avec tout un groupe d'utilisateurs.

Bon, maintenant, une question qui peut surgir, c'est "Que se passe-t-il si dans le dossier de démarrage par défaut et dans l'autre dossier de démarrage, il y a 2 fois le même nom de fichier ?". Je n'en sais rien... Je n'ai pas testé...

Dans un modèle par défaut Classeur.XLT

Classeur.XLT (eXceL Template) est un nom réservé qui désigne le classeur par défaut qui est ouvert quand vous ouvrez Excel. A la base, ce classeur n'existe pas, mais si vous le créez (Fichier/Enregistrer Sous, Type de Fichier : Modèle, Nom ; Classeur.XLT, Emplacement : Le même que Perso.XLS, ou l'autre dossier de démarrage), alors, chaque fois que vous allez ouvrir Excel, ce sera simplement une copie de ce classeur qui va être ouverte. Attention : a partir du moment ou Classeur.XLT existe, on ne peut plus utiliser Outils/Options/Général/Nombre de feuilles par nouveau classeur. Ce sera le nombre de feuilles de Classeur.XLT.

Dans un autre modèle de classeur .XLT

Les modèles de classeur doivent se trouver dans un dossier de démarrage (XLOUVRIR, XLSTART, ou l'autre dossier de démarrage défini par l'utilisateur). Dans ce cas, les macros seront disponibles dès qu'on ouvrira un classeur basé sur ce modèle (Fichier/Nouveau/Choisir le modèle en question)

Dans une macro complémentaire .XLA

Une macro complémentaire est un simple fichier Excel, qui ne possède pas de feuille visible, particulièrement conçu pour stocker des macros VBA. Pour plus d'informations sur les macros complémentaires existantes, cliquez ici.

Marche à suivre pour la création d'une macro complémentaire

  1. Allez dans Excel
  2. Dans la cellule A1, écrivez Coucou, et ENTER
  3. Faites Fichier/Enregistrer sous
  4. Type de fichier : Macro complémentaire Microsoft Excel (*.XLA)
    Constatez qu'il a changé automatiquement de dossier pour vous faire enregistrer votre .XLA dans le dossier des macros complémentaires
  5. Nom : testcomplement.XLA, et OK
    Constatez qu'en haut à gauche de la fenêtre Excel, ce n'est pas marqué "testcomplement.xla", mais toujours Classeur1, comme si le classeur n'avait pas été enregistré
  6. Allez dans Outils/Macros complémentaires. Recherchez testcomplement.xla. Constatez que vous ne le trouvez pas
  7. Fermez Excel. "Voulez-vous enregistrer les modifications apportées à Classeur1" : NON
    Effectivement, Excel n'a pas enregistré le classeur courant (qui contient Coucou dans A1)
  8. Revenez dans Excel
  9. Retrournez dans Outils/Macros Complémentaires. Recherchez testcomplement.xla. Constatez que MAINTENANT, il est dans la liste

Vous puvez mettre ou non une coche en face de cette macro complémentaire testcomplement.xla. Qu'est ce que ça signifie, cette coche ?

Dans un fichier de stockage des barres d'outils .XLB

Ici, ce n'est pas un choix, c'est une implication. Lorsque vous créez des barres d'outils personnalisées, celles-ci sont stockées sous forme de fichier binaire dans un fichier .XLB (eXcel Bar). Ce ou ces fichiers sont stockés dans le dossier de démarrage par défaut d'Excel. Ce sont des fichiers qu'on ne peut pas modifier comme ça. Pour voir le contenu, il faut d'abord créer une barre d'outils personnalisée, y attacher une ou plusieurs macros qui viennent d'endroits difféents, et ensuite visualiser le fichier résultant .XLB dans un éditeur de texte, tel que NotePad, par simple curiosité.