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

Comment passer des paramètres à une macro distante ?

2 réponses
Avatar
FPinton
Bonjour à tous,

Jusqu'à présent quand je voulais exécuter une des macros contenues dans un
classeur autre que celui qui était actif, j'écrivais quelque chose comme ça:
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro" et ça fonctionnait
très bien.

Malheureusement aujourd'hui j'ai besoin de faire la même chose mais en
passant des paramètres à la macro que je souhaite éxécuter. Et là, je vous
cache pas que j'ai de gros soucis pour les lui faire passer.

Pour passer 2 paramètres à ma macro :
Le1er fait référence à une cellule
Le 2em est une chaine de caractère.

J'ai écri ça, mais ça ne fonctionne pas.
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro (Range(" & Chr(34) &
"AW40" & Chr(34) & ")," & Chr(34) & "Texte pour faire un Essai"& Chr(34) &
")"

Pouvez vous me dire comment faire pour passer des paramètres à une macro
lancée de cette façon ?

D'avance merci de votre aide !

2 réponses

Avatar
MichDenis
Bonjour FPinton,

Tu devrais utiliser quelque chose comme :
Cette façon permet des espaces dans le chemin
ou le nom du fichier... on est jamais trop prudent.
Évidemment, tu peux remplacer ThisWorkbook.FullName
par le chemin et le nom du fichier en dur si nécessaire...

Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.FullName & "'!test1"
Application.Run LaMacro

Et pour passer des paramètres à la procédure :
Application.Run LaMacro, "Paramètre1", "Paramètre2"

Quelle est la nature du paramètre : Une chaine de caractère,
une valeur numérique, une plage de cellule... Ce que tu
passes comme paramètre doit être en accord avec le type
de variable défini dans la procédure appelée.
De même, si "Paramètre1", "Paramètre2" sont eux-mêmes
des variables, ils ne prennent pas des guillemets dans la
ligne de commande.





"FPinton" a écrit dans le message de groupe de discussion :
ud0#
Bonjour à tous,

Jusqu'à présent quand je voulais exécuter une des macros contenues dans un
classeur autre que celui qui était actif, j'écrivais quelque chose comme ça:
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro" et ça fonctionnait
très bien.

Malheureusement aujourd'hui j'ai besoin de faire la même chose mais en
passant des paramètres à la macro que je souhaite éxécuter. Et là, je vous
cache pas que j'ai de gros soucis pour les lui faire passer.

Pour passer 2 paramètres à ma macro :
Le1er fait référence à une cellule
Le 2em est une chaine de caractère.

J'ai écri ça, mais ça ne fonctionne pas.
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro (Range(" & Chr(34) &
"AW40" & Chr(34) & ")," & Chr(34) & "Texte pour faire un Essai"& Chr(34) &
")"

Pouvez vous me dire comment faire pour passer des paramètres à une macro
lancée de cette façon ?

D'avance merci de votre aide !
Avatar
FPinton
Super, merci MichDenis, la façon de faire que tu me proposes fonctionne à
merveille.
En plus, c'est bien plus simple pour passer les paramètres et bien plus
compréhensible comme ça.

Bonne journée à toi !


"MichDenis" a écrit dans le message de news:

Bonjour FPinton,

Tu devrais utiliser quelque chose comme :
Cette façon permet des espaces dans le chemin
ou le nom du fichier... on est jamais trop prudent.
Évidemment, tu peux remplacer ThisWorkbook.FullName
par le chemin et le nom du fichier en dur si nécessaire...

Dim LaMacro As String
LaMacro = "'" & ThisWorkbook.FullName & "'!test1"
Application.Run LaMacro

Et pour passer des paramètres à la procédure :
Application.Run LaMacro, "Paramètre1", "Paramètre2"

Quelle est la nature du paramètre : Une chaine de caractère,
une valeur numérique, une plage de cellule... Ce que tu
passes comme paramètre doit être en accord avec le type
de variable défini dans la procédure appelée.
De même, si "Paramètre1", "Paramètre2" sont eux-mêmes
des variables, ils ne prennent pas des guillemets dans la
ligne de commande.





"FPinton" a écrit dans le message de groupe de
discussion :
ud0#
Bonjour à tous,

Jusqu'à présent quand je voulais exécuter une des macros contenues dans un
classeur autre que celui qui était actif, j'écrivais quelque chose comme
ça:
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro" et ça fonctionnait
très bien.

Malheureusement aujourd'hui j'ai besoin de faire la même chose mais en
passant des paramètres à la macro que je souhaite éxécuter. Et là, je vous
cache pas que j'ai de gros soucis pour les lui faire passer.

Pour passer 2 paramètres à ma macro :
Le1er fait référence à une cellule
Le 2em est une chaine de caractère.

J'ai écri ça, mais ça ne fonctionne pas.
Application.Run "MonClasseurDistant.xls'!NomDeLaMacro (Range(" & Chr(34) &
"AW40" & Chr(34) & ")," & Chr(34) & "Texte pour faire un Essai"& Chr(34) &
")"

Pouvez vous me dire comment faire pour passer des paramètres à une macro
lancée de cette façon ?

D'avance merci de votre aide !