Automatiser l'ajout de macro à des fichiers existants

Bonjour,

Je débute en macro et j'ai besoin d'aide.

Nous avons plusieurs fichiers excel (en .xlsx) déjà existant que je souhaite protéger.

L'idée est qu'à chaque utilisation du fichier, avant la fermeture, le fichier soit automatiquement protéger puis enregistrer (mes collègues oubli d'activer la protection à chaque fois d'où la nécessité de le rendre automatique).

Dans le fichier (en .xlsm) qui nous sert de base pour la création de nouveaux fichier, j'ai mis les macros suivantes :

image

et

image

Cela fonctionne bien sur les fichiers nouvellement créés mais j'ai déjà pas de mal de fichiers existants auxquels j'aimerais ajouter ces 2 macros...

J'ai cherché et vu plusieurs propositions sur internet mais je suis perdue.

Est-il envisageable de créer une macro pour ne avoir à manuellement ouvrir chaque fichier, l'enregistrer en .xlsm et y ajouter les macros ?

Merci d'avance pour votre aide.

Bonjour,

Tout cela est possible, mais je ne vois pas l'intérêt de mettre dans l'événement _BeforeClose() une instruction pour lancer une macro qui fait ceci ou cela alors qu'il est si simple de mettre directement les instructions dans cet événement.

Comme je l'ai dit, il est possible d'exporter une macro dans tous les fichiers XLSX d'un dossier, mais sous certaines conditions :
1) Comme vous travaillez à plusieurs, il faut que vous soyez l'administrateur du système, cela va de soi.
2) Vous allez avoir besoin d'une librairie qui ne figure pas dans les outils par défaut. Il s'agit de Microsoft Visual Basic Applications for Extensibility 5.3. Si vous ne la voyez pas dans vos références, je vous dirai comment la charger.
3) Enfin, il va de soi que tous les fichiers XLSX seront convertis au format XLSM pour que cela fonctionne.

Je serai de retour demain.

Pas de retour alors voici comment procéder :

Bonjour,

Merci beaucoup pour votre retour.

Désolée, je ne travaille pas le weekend, je n'ai donc pas pu vous répondre plus tôt.

Nous allons intégrer les instructions directement dans BeforeClose, c'est effectivement plus logique.

Par contre, je ne sais pas si c'est un soucis sur mon navigateur (firefox & chrome) mais je ne visualise rien dans votre second message après "...voici comment procéder :"

Bonne journée

Etape 1 : ouvrez le fichier Protector.xlsm, cliquez sur "Développeur". Dans le bloc "Code" (en haut à gauche du bandeau), cliquez sur "Sécurité des macros". Si ce n'est fait, sélectionnez l'option "Activer toutes les macros (pas recommandé bla...bla...bla...") et cocher la case "Accès approuvé au modèle d'objet du projet VBA".

Etape 2 : Dupliquez le dossier contenant les fichiers à convertir au format XLSM pour le pas travailler sur les originaux.

Etape 3 : vous trouverez 2 macros dans le fichier : AddReference( ) et Exporter( ). La 2e c'est celle qui fait le taf, mais pour la faire fonctionner vous allez avoir besoin d'une librairie qui n'est pas installée par défaut avec Excel. Il s'agit de Microsoft Visual Basic for Applications Extensibility 5.3. Exécutez AddReference( ), puis cochez cette référence dans le tableau VBA...Outils...Références.

Etape 4 : Exécuter la macro Export, pointez le navigateur vers le dossier contenant les fichiers au format XLSX et validez. Il est normal que vous ne voyez pas les fichiers dans la fenêtre du dossier : le navigateur n'affiche que les répertoires.

Etape 5 : vous trouverez un fichier XLSM pour chaque fichier XLSX. Les fichiers XLSX sont conservés. Chargez un fichiers XLSM quelconque et modifiez-le. Vous pourrez le faire parce qu'il n'est pas encore protégé ; il le sera à sa première fermeture. Par la suite, il faudra déprotéger les onglets pour pouvoir les modifier.

12protector.xlsm (25.31 Ko)

PS : j'ai mis en remarque la procédure à suivre pour écrire cette macro en VBA.

Rechercher des sujets similaires à "automatiser ajout macro fichiers existants"