lancement d'une macro par une autre...

  • Initiateur de la discussion Initiateur de la discussion André
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

André

Guest
bonjour le forum,

voilà mon problème :
je voudrai commander une macro B située dans le classeur 2 par une autre, nommée A, située dans un autre classeur 1. Les deux classeurs sont dans le même répertoire.
donc, par la macro A, j'ouvre le classeur 2, je sélectionne la feuille qui doit subir des modifs, puis je veux lancer cette fameuse macro B. Et c'est là que ça se gâte : lors de l'enregistrement de la macro, tout se passe bien, mais en usage normal ou en pas à pas, j'ai droit à erreur d'exécution 1004 : Impossible de trouver la macro 2.xls!B
voilà ma ligne de commande, j'avoue que je sèche un peu ... il m'en reste beaucoup à apprendre...

Workbooks.Open Filename:="D:\gestion\2.xls"
Workbooks("2.xls").Sheets("EXT").Select
Application.Run "2.xls!B"

Merci du coup de main.
André
 
Salut !

Workbooks.Open Filename:="D:\gestion\2.xls"
Application.Run "2.xls!2.xls!B"

Premièrement je trouve le nom de ta macro très bizzare un titre de macro avec un point d'exclamation.....!!!

La synthaxe normale est :

Application.Run "NomDuClasseur!NomDeLaMacro"

@ +

Moa
 
Salut,
je suis bien d'accord, c'est ce qui est inscrit :
Workbooks.Open Filename:="D:\gestion\2.xls"
Workbooks("2.xls").Sheets("EXT").Select
Application.Run "2.xls!B"
D est le lecteur
gestion est le nom du dossier
2.xls est le nom du fichier, avec un point d'exclamation rajouté par Excel
EXt est le nom de la feuille que je veux active
B est le nom de la macro
la syntaxe est correcte, mais ça veut pas...
André
 
Re André !

Une petite chose.

Pourquoi : Workbooks("2.xls").Sheets("EXT").Select ?

A ta place je rajouterais au début de ta macro "B" :

Sheets("EXT").Select

Et j'enlèverais la ligne dans l'autre macro

Workbooks("2.xls").Sheets("EXT").Select

Autre chose, pas besoin de spécifier à Excel : Workbooks("2.xls"), car tu viens d'ouvrir ce classeur, et donc, il est actif.

Donc voilà, j'ai créé deux classeurs Bof1 et Bof2, j'ai fait une macro dans Bof2, puis avec l'enregistreur de macro, j'ai créé la macro dans Bof1 qui m'ouvre Bof2 et lance la macro de Bof2.

Puis je ferme tout, j'ouvre Bof1, je lance la macro et tout marche à merveille.

Voici le code de la macro de Bof1 :

Workbooks.Open Filename:="C:\Documents and Settings\Robin\Bureau\Bof2.xls"
Application.Run "Bof2.xls!MacroBof2"


Donc, tu dois avoir un autre problème dans ton fichier.

Zippe le, afin que l'on puisse y jeter un oeil.

@ +


Moa
 
Re Re moa
je voudrai bien zipper et envoyer le fichier, mais c'est une usine à gaz, et même zippé il pèse près d'un Mo, et je l'ai nettoyé...
Je pense que je vais suivre la même démarche que toi, à savoir créer les macros dans deux petis fichiers,et voir ce que ça donne, puis rajouter les morceaux jusquà la rupture...
merci de ton aide, je te tiens au courant...
Encore une question : est ce que le fait d'avoir protéger les fichiers et les macros peut avoir une incidence ?
Bonne journée
André
 
J'ai mal formulé ma question :
Si la macro est protégée par mot de passe, et la feuille liée à la macro est elle aussi protégée mais sans mot de passe.


Finalement mon problème devait venir de plusieurs choses :
1-la macro B était dans "this workbook"et non dans "module1"(à quoi il sert exactement ce "this workbook"?
2-la macro A faisait référence à une variable et je pensais naivement pouvoir l'utiliser dans la deuxième...
3- le fichier 2 a eu un problème (mais lequel ?) et provoquait une erreur de protection dans excel.
Mais ca y est, ca marche...
encore merci du coup de main et bon week-end
André
 
salut, j'ai une petite question qui ressemble à votre probleme, ça seré super cool que vous puissiez m'aider!!
en fait :
j'ai une macro affectée à un bouton dans un fichier x.xsl , elle va chercher la valeur d'une case ("D2" par exemple)
quelqu'un peut il m'expliquer pourquoi quand j'enregistre la macro qui fait ça, je l'affecte à mon bouton, je l'execute cela fonctionne,...
MAIS si je copie colle le code de la macro affectée a mon bouton ben ça marche pas, j'ai l'erreur 1004 aussi avec la classe range qui marche pas.

MERCI 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
796
Réponses
23
Affichages
3 K
Retour