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

Exécuter un programme à partir d’ un autre classeur

4 réponses
Avatar
Polus
Bonjour à Toutes et à Tous

J’ ai 2 classeurs ouverts.
Dans chacun d’eux j’ai différents "controls"
(listbox,commandbutton,spinbutton) sur les feuilles(Worksheets) de même que
différents "controls" (listbox,commandbutton,textbox) sur les
formulaires(Userform) de même que pour chaque classeur, un module.

Voici mon problème
En étant dans le classeur 2, j’ exécute une commande(Par l’ intermédiaire d’
un bouton de "commandbar") qui doit faire appel à un programme du classeur 1.
Ce programme est parfaitement exécuter lorsque le classeur 1 est "activate"
et que le userform est "show" et que le "cmdPèseSurlePiton" est click

Comment exécuter ce programme du classeur 1 en étant dans le classeur 2

Merci à l’ avance

4 réponses

Avatar
JLuc
*Bonjour Polus*,
En spécifiant le nom du classeur contenant le programme :
Workbooks("Classeur1.xls").EtLeNomDeLaMacro

Bonjour à Toutes et à Tous

J’ ai 2 classeurs ouverts.
Dans chacun d’eux j’ai différents "controls"
(listbox,commandbutton,spinbutton) sur les feuilles(Worksheets) de même que
différents "controls" (listbox,commandbutton,textbox) sur les
formulaires(Userform) de même que pour chaque classeur, un module.

Voici mon problème
En étant dans le classeur 2, j’ exécute une commande(Par l’ intermédiaire d’
un bouton de "commandbar") qui doit faire appel à un programme du classeur 1.
Ce programme est parfaitement exécuter lorsque le classeur 1 est "activate"
et que le userform est "show" et que le "cmdPèseSurlePiton" est click

Comment exécuter ce programme du classeur 1 en étant dans le classeur 2

Merci à l’ avance


--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

Avatar
MichDenis
Voici une situation :

2 Classeurs ouverts

Dans chaque classeur, il y a un formulaire (userform)

Classeur1 -> Nom du formulaire : UserF
Classeur2 -> Nom du formulaire : Userform1

Si tu es dans le classeur1 et que tu veux faire exécuter une
procédure située dans le formulaiire du classeur2, voici une
façon de faire :

A ) Dans le Classeur2, tu crées une procédure dans un module STANDARD
dont la seule tâche sera de répondre à l'appel du classeur1 pour l'exécution
de la procédure du formulaire situé dans le classeur2
'----------------------
Sub LeTest()
' Test est le nom de la procédure situé dans le formulaire du classeur2
' l'appel de la macro du formulaire, va faire ouvrir (show) ce dernier automatiquement
Userform1.test 'Userform1 -> Nom du formulaire
End Sub

Et pour appeler à partir du classeur1, la procédure du formulaire du classeur2
tu passes dans la procédure de ton choix du classeur1, la ligne de commande suivante :

Application.Run "classeur2!module1.LeTest"

Et pour terminer, quelques notions de syntaxes sur la ligne de commande
pour appeler une macro d'un autre classeur

Exécuter une macro d'un autre classeur:

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 suiivante, 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"




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

Bonjour à Toutes et à Tous

J' ai 2 classeurs ouverts.
Dans chacun d'eux j'ai différents "controls"
(listbox,commandbutton,spinbutton) sur les feuilles(Worksheets) de même que
différents "controls" (listbox,commandbutton,textbox) sur les
formulaires(Userform) de même que pour chaque classeur, un module.

Voici mon problème
En étant dans le classeur 2, j' exécute une commande(Par l' intermédiaire d'
un bouton de "commandbar") qui doit faire appel à un programme du classeur 1.
Ce programme est parfaitement exécuter lorsque le classeur 1 est "activate"
et que le userform est "show" et que le "cmdPèseSurlePiton" est click

Comment exécuter ce programme du classeur 1 en étant dans le classeur 2

Merci à l' avance
Avatar
Polus
Merci beaucoup de prendre tout ce temps pour répondre.
Le programme que je dois exécuter dans l' autre classeur est exécuter quand
un bouton de command est click.Supposons qu'il s' appelle cmdPèseBouton_click
Dois-je écrire : Application.Run "classeur2!module1.cmdPèseBouton_click" ?
Merci encore


Voici une situation :

2 Classeurs ouverts

Dans chaque classeur, il y a un formulaire (userform)

Classeur1 -> Nom du formulaire : UserF
Classeur2 -> Nom du formulaire : Userform1

Si tu es dans le classeur1 et que tu veux faire exécuter une
procédure située dans le formulaiire du classeur2, voici une
façon de faire :

A ) Dans le Classeur2, tu crées une procédure dans un module STANDARD
dont la seule tâche sera de répondre à l'appel du classeur1 pour l'exécution
de la procédure du formulaire situé dans le classeur2
'----------------------
Sub LeTest()
' Test est le nom de la procédure situé dans le formulaire du classeur2
' l'appel de la macro du formulaire, va faire ouvrir (show) ce dernier automatiquement
Userform1.test 'Userform1 -> Nom du formulaire
End Sub

Et pour appeler à partir du classeur1, la procédure du formulaire du classeur2
tu passes dans la procédure de ton choix du classeur1, la ligne de commande suivante :

Application.Run "classeur2!module1.LeTest"

Et pour terminer, quelques notions de syntaxes sur la ligne de commande
pour appeler une macro d'un autre classeur

Exécuter une macro d'un autre classeur:

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 suiivante, 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"




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

Bonjour à Toutes et à Tous

J' ai 2 classeurs ouverts.
Dans chacun d'eux j'ai différents "controls"
(listbox,commandbutton,spinbutton) sur les feuilles(Worksheets) de même que
différents "controls" (listbox,commandbutton,textbox) sur les
formulaires(Userform) de même que pour chaque classeur, un module.

Voici mon problème
En étant dans le classeur 2, j' exécute une commande(Par l' intermédiaire d'
un bouton de "commandbar") qui doit faire appel à un programme du classeur 1.
Ce programme est parfaitement exécuter lorsque le classeur 1 est "activate"
et que le userform est "show" et que le "cmdPèseSurlePiton" est click

Comment exécuter ce programme du classeur 1 en étant dans le classeur 2

Merci à l' avance





Avatar
MichDenis
Je m'abstiendrai de répondre à cette question... je crois
que l'information donnée à ta question est complète.

Dans le doute, tu peux faire quelques tests !
je suis sûr que tu finiras par trouver ... ;-)



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

Merci beaucoup de prendre tout ce temps pour répondre.
Le programme que je dois exécuter dans l' autre classeur est exécuter quand
un bouton de command est click.Supposons qu'il s' appelle cmdPèseBouton_click
Dois-je écrire : Application.Run "classeur2!module1.cmdPèseBouton_click" ?
Merci encore


Voici une situation :

2 Classeurs ouverts

Dans chaque classeur, il y a un formulaire (userform)

Classeur1 -> Nom du formulaire : UserF
Classeur2 -> Nom du formulaire : Userform1

Si tu es dans le classeur1 et que tu veux faire exécuter une
procédure située dans le formulaiire du classeur2, voici une
façon de faire :

A ) Dans le Classeur2, tu crées une procédure dans un module STANDARD
dont la seule tâche sera de répondre à l'appel du classeur1 pour l'exécution
de la procédure du formulaire situé dans le classeur2
'----------------------
Sub LeTest()
' Test est le nom de la procédure situé dans le formulaire du classeur2
' l'appel de la macro du formulaire, va faire ouvrir (show) ce dernier automatiquement
Userform1.test 'Userform1 -> Nom du formulaire
End Sub

Et pour appeler à partir du classeur1, la procédure du formulaire du classeur2
tu passes dans la procédure de ton choix du classeur1, la ligne de commande suivante :

Application.Run "classeur2!module1.LeTest"

Et pour terminer, quelques notions de syntaxes sur la ligne de commande
pour appeler une macro d'un autre classeur

Exécuter une macro d'un autre classeur:

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 suiivante, 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"




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

Bonjour à Toutes et à Tous

J' ai 2 classeurs ouverts.
Dans chacun d'eux j'ai différents "controls"
(listbox,commandbutton,spinbutton) sur les feuilles(Worksheets) de même que
différents "controls" (listbox,commandbutton,textbox) sur les
formulaires(Userform) de même que pour chaque classeur, un module.

Voici mon problème
En étant dans le classeur 2, j' exécute une commande(Par l' intermédiaire d'
un bouton de "commandbar") qui doit faire appel à un programme du classeur 1.
Ce programme est parfaitement exécuter lorsque le classeur 1 est "activate"
et que le userform est "show" et que le "cmdPèseSurlePiton" est click

Comment exécuter ce programme du classeur 1 en étant dans le classeur 2

Merci à l' avance