lancement d'une macro par une autre...

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é
 
M

Moa

Guest
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
 
A

André

Guest
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é
 
M

Moa

Guest
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
 
A

André

Guest
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é
 
A

André

Guest
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é
 
N

nicolas

Guest
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 ;)
 

Discussions similaires

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth