Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Appel de macro dont le nom est dans une variable

  • Initiateur de la discussion Kris 1010
  • Date de début
K

Kris 1010

Guest
Bonjour,

Question :
Le sujet du message est presque suffisant ...

J'aimerai executer une macro d'un autre classeur
dont le nom de la macro est dans une cellule

La macro à atteindre n'est pas dans un module mais dans une feuille.
La macro à atteindre est Public .

Je ne trouve pas la synthaxe permettant ceci.
exemple :
toto = Workbooks("Classeur").Worksheets("Feuile1").Range("A1").Value
' toto contient le nom de la macro

Run Workbooks("Class2").Worksheets("Feuile1").toto
ne fonctionne pas

ou
Workbooks("Class2").Worksheets("Feuile1").toto
ne fonctionne pas non plus puisque toto n'est pas le nom de la macro

Merci d'avance ...
 
M

Michel_M

Guest
bonsoir Kris,

dans le fichier source:

sub depart()
dim var as string
'dans A1 il y a marqué: mavar

Var = Range("A1")
Windows("cible.xls").Activate
Application.Run "cible.xls!Feuil1." & Var
End Sub


dans le fichier cible en feuil1 de VBE

Sub mavar()

Range("B2") = "gagné"
End Sub

bonne soirée
 
K

Kris 1010

Guest
Navré sauf erreur
Application.Run "Classeur.xls!Feuil1.macro"

ne fonctionne pas ...

La macro en question n'est pas dans un module

merci quand même

Kris
 
M

Michel_M

Guest
bonsoir,

surpris car chez moi ca marche

nota : la macro depart ne peut pas être dans un module "feuillX" car tu fais un appel vers un "hors-feuille"

Michel
 
K

Kris 1010

Guest
Bonsoir,

J'ai ENFIN trouvé la raison du blocage de

Application.Run "Classeur.xls!Feuil1.macro"

Dans cette fonction, "Feuil1" n'est pas le nom de l'onglet
mais le nom de l'object VBA apparaissant dans la fenêtre projet (le nom de
l'onglet appairaissant entre parenthèses).

Pour un nouveau classeur,
le nom de l'onglet et le nom de l'object sont identiques : "Feuil1" .

Mais si on renomme l'onglet : exemple : "toto"
la fonction Application.Run doit être
Application.Run "Classeur.xls!Feuil1.macro"
et non pas
Application.Run "Classeur.xls!toto.macro"

Je ne comprends pourquoi mais pour ma part, c'était la raison du bug.

Kris,
 
K

Kris 1010

Guest
Suite du Message précédent
------------------------------------

oups, j'ai omis qque chose :

Réponse= MsgBox("MERCI", vbOKOnly + vbInformation, "Message")
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…