Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancer une macro d'un autre classeur

4 réponses
Avatar
Alf
Bonjour =C3=A0 tous,

J=E2=80=99ex=C3=A9cute une macro dans un classeur.

Je voudrai,
Ouvrir un autre classeur et lancer une macro de cet autre classeur qui s'ap=
pliquera =C3=A0 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=C3=A9 avec Run, mais Excel me dit que la macro du classeur ouver=
t n'existe pas....

Merci pour votre aide
Alf

4 réponses

Avatar
Jacquouille
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
Avatar
Michd
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
Avatar
Michd
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
Avatar
Alf
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