OVH Cloud OVH Cloud

Déclencher une Private Sub XX_Click à partir d'un autre userform

2 réponses
Avatar
ManBas
Re-bonjour,
Mes objectifs se précisent aprés le fil précédent.
A partir d'un userform1.textbox1_change, je voudrais lancer une Private Sub
XX_click dont le controle se trouve dans un userform2.
Anonymous m'a suggéré CallByName.
J'ai trouvé ceci:
http://frederic.sigonneau.free.fr/code/VBE/DeclencherClickBouton.txt
J'ai transformé la Private en Public: le code est parcouru et ça marche.
Mais je risque d'en avoir beaucoup (à la fin) des public sub!
Ensuite j'ai écris cela mais ça ne marche pas:
Dim ProcName As String
ProcName = userform2.XX & "_Click"
CallByName Worksheets("feuill1"), ProcName, VbMethod
Pouvez-vous m'aider à appeler le code en conservant la caractéristique
Private?
Merci infiniment d'avance.

2 réponses

Avatar
Michel Pierron
Bonsoir ManBas;
Dans VBA, toutes les procédures qui ne sont pas déclarées Private sont
considérés Public.
Donc par exemple dans ton module UserForm2, enlève Private et ça marchera:
(Tu peux aussi indiquer directement la constante VbMethod qui vaut 1).
Sub CommandButton1_Click()
MsgBox "Hello word !", 64
End Sub

Et dans le module UserForm1:
Private Sub TextBox1_Change()
CallByName UserForm2, "CommandButton1_Click", 1
End Sub

MP

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

Re-bonjour,
Mes objectifs se précisent aprés le fil précédent.
A partir d'un userform1.textbox1_change, je voudrais lancer une Private
Sub

XX_click dont le controle se trouve dans un userform2.
Anonymous m'a suggéré CallByName.
J'ai trouvé ceci:
http://frederic.sigonneau.free.fr/code/VBE/DeclencherClickBouton.txt
J'ai transformé la Private en Public: le code est parcouru et ça marche.
Mais je risque d'en avoir beaucoup (à la fin) des public sub!
Ensuite j'ai écris cela mais ça ne marche pas:
Dim ProcName As String
ProcName = userform2.XX & "_Click"
CallByName Worksheets("feuill1"), ProcName, VbMethod
Pouvez-vous m'aider à appeler le code en conservant la caractéristique
Private?
Merci infiniment d'avance.




Avatar
ManBas
Je vais faire ça.
J'avais enlevé le private et à un moment les choses fonctionnaient (lors du
message) puis plus rien.C'est dur ça!
Merci beaucoup Michel.
"Michel Pierron" a écrit dans le message de news:
%
Bonsoir ManBas;
Dans VBA, toutes les procédures qui ne sont pas déclarées Private sont
considérés Public.
Donc par exemple dans ton module UserForm2, enlève Private et ça marchera:
(Tu peux aussi indiquer directement la constante VbMethod qui vaut 1).
Sub CommandButton1_Click()
MsgBox "Hello word !", 64
End Sub

Et dans le module UserForm1:
Private Sub TextBox1_Change()
CallByName UserForm2, "CommandButton1_Click", 1
End Sub

MP

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

Re-bonjour,
Mes objectifs se précisent aprés le fil précédent.
A partir d'un userform1.textbox1_change, je voudrais lancer une Private
Sub

XX_click dont le controle se trouve dans un userform2.
Anonymous m'a suggéré CallByName.
J'ai trouvé ceci:
http://frederic.sigonneau.free.fr/code/VBE/DeclencherClickBouton.txt
J'ai transformé la Private en Public: le code est parcouru et ça marche.
Mais je risque d'en avoir beaucoup (à la fin) des public sub!
Ensuite j'ai écris cela mais ça ne marche pas:
Dim ProcName As String
ProcName = userform2.XX & "_Click"
CallByName Worksheets("feuill1"), ProcName, VbMethod
Pouvez-vous m'aider à appeler le code en conservant la caractéristique
Private?
Merci infiniment d'avance.