VBA: importer et exporter le code VBA

Si vous travaillez beaucoup avec Excel et VBA, il pourrait vous intéresser de savoir comment exporter le code VBA d'un Projet et l'importer dans un autre. Ceci s'inscrit dans la méthode de la réutilisation du code informatique:  pourquoi écrire un code qui a déjà été écrit?

L'avantage de VBA est que son code est simplement du texte. La méthode la plus facile consiste donc simplement à copier le code d'un Projet et le coller dans un autre Projet. Oui, c'est possible. Rapide, simple et suffisant dans un grand nombre de cas. Mais si votre nouveau Projet n'est pas encore en cours? Allez-vous chercher dans quel fichier Excel votre code se trouve au moment de commencer le nouveau Projet? Cela peut être fastidieux… C'est pour cela qu'il y a une autre méthode très simple: exporter le code VBA directement dans l'éditeur VBA (le VBE). Et idem pour l'importer.

Exporter le code VBA – comment faire?

Pour exporter le code VBA qui se trouve dans un Module, il vous suffit de:

  1. Click droit sur le Module à exporter
    Exporter le code VBA: exemple
  2. Choisissez "Exporter un fichier…"
    Exporter code VBA
  3. Choisissez l'emplacement du fichier .bas Le nom par défaut va correspondre au nom du Module
    Exporter code VBA: fichier .bas
  4. Enregistrez le fichier
    Exporter code VBA: fichier .bas exporté

 

Et c'est tout. Votre code est ainsi exporté et prêt pour une future réutilisation…

Attention: Si vous exportez un Module, le fichier aura la suffixe .bas. Si par contre vous voulez exporter le code du ThisWorkbook, le code contenu dans les Feuilles, dans les Formulaires ou dans une Classe, le fichier exporté aura la suffixe .cls

Exporter code VBA: ThisWorkbook

 

Importer le code VBA – tout aussi simple

Le code ainsi exporté peut donc être importé dans un autre Projet / Classeur. La procédure est tout aussi simple.

  1. Click droit sur le Projet
  2. "Importer un fichier…"
  3. Choisissez le fichier à importer
  4. Cliquez sur "Ouvrir"

Selon le type du fichiez que vous importerez, un nouveau Module ou une Classe seront ajoutés à votre Projet. Le nom du Module ou de la Classe correspondra au nom du fichier importé.

Attention: Dans des version plus anciennes, il n'est pas possible d'importer un fichier si un objet avec le même nom est déjà présent dans votre Classeur! Vous devez donc renommer l'objet en question dans le Projet avant d'importer un autre avec le même nom. Dans les versions récentes d'Office, si vous importez un objet avec le même nom, ce nom sera automatiquement  adapté avec l'ajout d'un chiffre. Si vous avez un Module nommé "MonModule" et vous voulez importer un module externe avec le même nom, il sera importé en tant que "MonModule1" pour éviter les conflits…

Attention aux Formulaires VBA!

Si vous voulez exporter un Formulaire VBA, faites attention: un formulaire VBA est composé de DEUX fichiers différents!

  • un fichier .FRM qui contient le code VBA du formulaire
  • un fichier .FRX qui contient le formulaire même (objets, formats,…)

Exporter un Formulaire VBA

Exporter un Formulaire VBA: aperçu des fichiers

Conclusion de ce tutoriel

Si vous travaillez avec de nombreux Classeurs qui contiennent plusieurs Modules, cette méthode est plus fiable et plus gérable que des copier/coller du code VBA entre les fichiers. Cette méthode est d'ailleurs très simple et très rapide…

Juste une remarque: attention, certains clients de messagerie email (tels que Outlook, Gmail etc.) "n'aiment pas" les fichiers avec les suffixes .BAS, .CLS, .FRX et .FRM. Vous aurez peut-être du mal à les envoyer par email tels quels. Si c'est le cas, il suffit de changer le suffixe avant l'envoi et le remodifier après la réception. Ou une autre possibilité est de "zipper" le(s) fichier(s) avant l'envoi.

Et si vous êtes intéressés, vous pouvez essayer la Formation VBA gratuit en ligne que je vous propose ici sur Excel-Malin.com

Pour aller plus loin en VBA

Et pour terminer, voici quelques autres articles sur VBA qui pourraient vous être bien utiles…

 

Laissez un commentaire

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