Mise à jour auto code VBA, possible ?

Bonjour à tous,

J'ai un gros classeur Excel qui comporte 12 onglets différents avec des référence à plusieurs autre excel externes et blindé de formules dans tous les sens.

J'ai réalisé un classeur de base vierge de toute information sur le produit (prêt à remplir si vous voulez) et ce classeur contient plusieurs macros dont une qui peut potentiellement changer dans le temps (formule de calcul mécanique).

Cependant j'ai ainsi créé un paquet de classeur différent pour chaque produit différent à partir toujours de cette même feuille de base afin qu'à la fin les classeurs se référent au même classeur.

Mais alors comment faire pour que lors d'une modification du code dans le fichier de base, celui-ci se modifie aussi dans tous les classeurs fait à partir de lui car là j'ai du tout refaire un sacré nombre de fois pour la moindre modif du code de base, n'y a t'il pas moyen de faire comme les référence externe mais avec du code, genre que le fichier de base aille chercher son fichier de macro à l'extérieur plutôt qu'en interne ?

Je sais pas si je suis claire mais en tout cas ça m’arrangerai que ça soit possible car là je répète inlassablement la même chose pour la moindre modification du code de base ...

Merci d'avance.

Bonjour,

Tu peux créer un fichier Excel contenant tes macros, et faire appel a la procédure de ton choix depuis les autres classeurs Excel.

Je m'expliques :

Tu as les macros A, B, C et D qui sont utilisées dans les classeurs Excel 1,2,3,4,5 et 6.

Plutôt que d'héberger 6x les macros A,B,C et D dans les 6 classeurs Excel, tu crées un 7ème classeur Excel qui fera office de stockage de macros.

Ensuite, dans les classeurs 1 à 6, dans un module, tu fais simplement appel aux procédures de ton choix de cette façon :

Application.Run ("'Chemin_d'accès_au_fichier\Nom_Du_Classeur.xlsm'!Nom_De_La_Procédure")

De cette manière, si tu modifies ton code, pas de soucis pour l'étendre à tous les classeurs

Cordialement,

Etant encore dans mes début sous VBA j'ai du me planter quelque part.

En fait dans mes fichiers la macro est utilisé via un bouton.

J'ai créer un nouveau excel où j'ai mis le code de ma macro dans la feuille 1.

J'ai enlevé le code de l'excel du produit déjà rempli et j'ai crée un nouveau module dans lequel j'ai créer une macro qui utilise le Application.Run dedans.

Le bouton maintenant se réfère au module ainsi crée mais erreur il trouve pas le fichier de base où le code est ...

J'ai du oublier quelque chose ...

Re,

Tu as bien mis le chemin complet du fichier contenant la macro ?

Application.Run ("'C:\Users\212453573\Desktop\test_macro_externe.xlsm'!boucle2")

boucle2 est le nom de la procédure qui contient le code qui va être modifié.

test_macro_externe est le fichier excel externe qui contient dans la feuille 1 la macro boucle2.

et cette ligne de code est contenue dans un module d'une des feuilles déjà rempli.

Je suis perdu là ...

Pourquoi dans beaucoup de sujet l'instruction Application.Run est utilisée sans préciser de chemin alors qu'il faut bien qu'il cherche au bon endroit ?!

Bon j'ai trouvé :

1: placer ma macro dans un module aussi et pas dans une feuille dans le fichier externe.

2: placer dans un module de la feuille qui va utiliser la macro de l'autre classeur l'instruction Application.Run.

3: laisser ouvert le fichier externe qui contient la macro sinon l'appel de la macro ne trouve pas le fichier, doit y avoir un moyen d'éviter de l'ouvrir tout le temps mais bon.

Bref je crois que maintenant c'est bon.

bonjour,

la solution s'appelle "macro complémentaire"

Dans un classeur vierge vous collez votre macro.

Ce classeur Vous l'Enregistrer Sous...

Habituellement on l'appelle souvent Perso.xlam mais vous pouvez le baptiser comme vous voulez...

perso

Ensuite vous devez le cocher dans Développeur > Complément

Vous pourrez alors utiliser l'une ou l'autre des macros contenues dans ce classeur en l'appelant depuis n'importe quel autre classeur.

Il n'est pas nécessaire d'utiliser une syntaxe particulière : Bien qu'elle ne soit pas visible, il suffit d'invoquer (par son nom) une macro existante dans votre perso.xlam pour qu'elle s'exécute.

Exemple :

Vous créez une macro dans un classeur vierge :

Sub bonjour()
Msgbox "coucou"
End Sub

Vous enregistrez votre "perso.xlam" et vous fermez Excel

Vous ouvrez Excel à nouveau et vous cochez Développeur > Complément x Perso

Créez une macro :

Sub test()
bonjour
End Sub

et exécutez là : le message apparait.

Vous pouvez enregistrer autant de macro que vous voulez dans ce classeur :

Elles n'apparaissent nulle part mais seront exécutées tant qu'elles resteront cochées dans Développeur > Complément

Si vous y incorporez des Fonctions elles apparaissent dans la liste des fonctions personnalisées et peuvent être utilisée au même titre que les fonctionsnatives d'Excel.

Nota : Votre "perso.xlam" n'est visible nulle part sauf dans VBA. si vous le masquez avec un mot de passe personne ne pourra le lire, mais les macros contenues resteront accessibles.

Si vous perdez le mot de passe c'est foutu...

Si vous modifiez votre "perso.xlam" n'oubliez pas de l'enregistrer à partir de VBA sinon les modifications seront perdues.

A+

Rechercher des sujets similaires à "mise jour auto code vba possible"