Lancer une macro d'un autre classeur

Le
Alf
Bonjour à tous,

J’exécute une macro dans un classeur.

Je voudrai,
Ouvrir un autre classeur et lancer une macro de cet autre classeur qui s'ap=
pliquera à ce nouveau classeur ouvert.

et ainsi de suite pour d'autres classeurs.

En fait chaque classeur doit avoir son traitement avec une macro qui lui es=
t propre.

J'ai essayé avec Run, mais Excel me dit que la macro du classeur ouver=
t n'existe pas.

Merci pour votre aide
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #26466565
Bonjour Alf,
L'histoire, bien que bien écrite, ne nous dit pas où tu caches tes macros.
Sont-elles dans un module de VBA Project (Perso.xls) ou dans le ThisWorkbook
du dossier utilisé?
La version de ton XL serait peut-être utile aux ténors de ce forum. Perso,
avec mon vieux 2003, je suis à la traine, mais mes macros sont dans
Perso.xls et accessibles à tous les fichiers.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Alf" a écrit dans le message de groupe de discussion :

Bonjour à tous,
J’exécute une macro dans un classeur.
Je voudrai,
Ouvrir un autre classeur et lancer une macro de cet autre classeur qui
s'appliquera à ce nouveau classeur ouvert.
et ainsi de suite pour d'autres classeurs....
En fait chaque classeur doit avoir son traitement avec une macro qui lui est
propre.
J'ai essayé avec Run, mais Excel me dit que la macro du classeur ouvert
n'existe pas....
Merci pour votre aide
Alf
Michd
Le #26466571
Bonjour,
Un exemple de code :
'-----------------------------------------------------
Dim Wk as Workbook
Dim MaMacro As string
Dim Fichier As String
Fichier = "C:UsersMon ProfilDocumentsMon Fichier.xlsm"
Set Wk = Workbooks.Open(Fichier)
'cette syntaxe est possible seulement si la macro "Test1"
'est située dans un module standard.
'les guiilements simples sont essentiels si dans le nom du fichier
'il y a des espaces comme dans l'exemple suivant `:
MaMacro = "'" & ThisWorkbook.Name & "'!test1"
'Syntaxe si la macro est située dans le module "Feuil1"
MaMacro = "'" & ThisWorkbook.Name & "'!Feuil1.test1"
Exécution de la macro
Application.Run MaMacro
'-----------------------------------------------------
Explication générale sur le sujet
A )
Nom de la macro : "test1"
Si ton classeur est fermé et que la macro appelée se retrouve dans un
module standard :
Application.Run "'C:Mes documentsAnswer.xls'!test1"
Même chose, mais si le classeur est déjà ouvert :
Application.Run "Answer.xls!test1"
B ) Si le nom de ton classeur contient des espaces :
L'utilisation des apostrophes "'" permet d'utiliser
un nom de classeur contenant des espaces , sans
ces dernières, point de salut.
Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.Name & "'!test1"
Application.Run LaMacro
C) Si la macro appelée est dans un module feuille du classeur au lieu d'être
dans un module standard :
Dans la ligne de commande, tu dois insérer le nom de l'objet "Feuille" que
tu retrouves dans la fenêtre VBE (visual basic editor).
Dans la fenêtre de gauche de ton projet, la liste des feuilles est affichée
dans ce format : "toto"("Feuil4")
toto = Nom de l'onglet de la feuille
Feuil4 = Propriété Name de l'objet Feuille (worksheet)
Dans la commande suivante, tu dois utiliser le nom de la feuille et non de
l'onglet de la feuille
Si le fichier est ouvert :
Application.Run "modele.xls!Feuil4.test1"
Si le fichier est fermé :
Application.Run "'C:Mes documentsAnswer.xls'!Feuil4.test1"
MichD
Michd
Le #26466580
Désolé, dans mon exemple, il y a une coquille. Il faut remplacer cette ligne
de code :
MaMacro = "'" & ThisWorkbook.Name & "'!Feuil1.test1"
Par
MaMacro = "'" & Wk.Name & "'!Feuil1.test1"
Wk étant la variable qui désigne le fichier que la procédure vient d'ouvrir.
MichD
Alf
Le #26466648
Le mercredi 7 mars 2018 07:35:43 UTC+1, Alf a écrit :
Bonjour à tous,
J’exécute une macro dans un classeur.
Je voudrai,
Ouvrir un autre classeur et lancer une macro de cet autre classeur qui s' appliquera à ce nouveau classeur ouvert.
et ainsi de suite pour d'autres classeurs....
En fait chaque classeur doit avoir son traitement avec une macro qui lui est propre.
J'ai essayé avec Run, mais Excel me dit que la macro du classeur ouv ert n'existe pas....
Merci pour votre aide
Alf

Bonjour,
Merci pour votre aide précieuse
MichD,
Le nom de mon classeur contenait des espaces...
J'ai juste rajouté Wk.Activate pour exécuter la macro dans son pr opre classeur...
Tout est OK
Merci à tous
Publicité
Poster une réponse
Anonyme