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

Application.caller dans un userform ?

5 réponses
Avatar
Sitting Hoax
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un userform.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)

5 réponses

Avatar
anonymousA
Bonjour,

une réponse globale

1)pour un Userform p.e. si on a cliqué sur le bouton celui-ci est
forcément
'actif à ce moment-là.
'
'Private Sub CommandButton1_Click()
'MsgBox ActiveControl.Object.Caption
'End Sub
'
'2) pour un objet OLE dans un onglet, dans l'exemple celui-ci s'appelle
CBTATA
'
'Private Sub CBTATA_Click()
'MsgBox ActiveSheet.OLEObjects("CBTATA").Object.Caption
'ou directement
'MsgBox CBTATA.Object.Caption
'End Sub
'
'3)pour un objet xlButton issu de la barre de formulaires et placé
dans
'l 'onglet, le code suivant est à mettre dans la macro qui est
affectée au
'bouton en supposant que le bouton s'appelle Button1
'
'MsgBox ActiveSheet.shapes("Button1").TextFrame.Characters.Caption
'
'4)pour un objet bouton de commande d'une barre menus donc un controle,
lignes
'de code à rajouter dans la procédure OnAction stipulée
'
'MsgBox CommandBars.ActionControl.Caption

A+

Sitting Hoax wrote:
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un userfor m.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)


Avatar
Sitting Hoax
Exactement la syntaxe qu'il me fallait,
merci beaucoup anonymousA ;-)
Amicalement
Siesting Hoax

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

Bonjour,

une réponse globale

1)pour un Userform p.e. si on a cliqué sur le bouton celui-ci est
forcément
'actif à ce moment-là.
'
'Private Sub CommandButton1_Click()
'MsgBox ActiveControl.Object.Caption
'End Sub
'
'2) pour un objet OLE dans un onglet, dans l'exemple celui-ci s'appelle
CBTATA
'
'Private Sub CBTATA_Click()
'MsgBox ActiveSheet.OLEObjects("CBTATA").Object.Caption
'ou directement
'MsgBox CBTATA.Object.Caption
'End Sub
'
'3)pour un objet xlButton issu de la barre de formulaires et placé
dans
'l 'onglet, le code suivant est à mettre dans la macro qui est
affectée au
'bouton en supposant que le bouton s'appelle Button1
'
'MsgBox ActiveSheet.shapes("Button1").TextFrame.Characters.Caption
'
'4)pour un objet bouton de commande d'une barre menus donc un controle,
lignes
'de code à rajouter dans la procédure OnAction stipulée
'
'MsgBox CommandBars.ActionControl.Caption

A+

Sitting Hoax wrote:
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un
userform.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)


Avatar
Sitting Hoax
Bon, je reviens vers vous,
because ça ne marche pas :-(
j'ai un Userform avec des Labels qui activent une macro,
et un CommandButton1 dans l'Userform,
mais la macro 'MsgBox ActiveControl.Object.Caption
me donne toujours le même renseignement, à savoir "CommandButton1"
Je voudrais que la macro me renvoie le "Name"du Label qui active la macro ou
bien "Caption".
"ActiveControl" apparemment ne concerne que le boutons de commande, même
quand ce n'est pas lui qui active la macro.

c'est justement pour m'éviter de mettre dans chaque marcro Label_click le
nom dudit Label,
une seule macro devant donner le nom de n'importe quel Label.
Comprenez vous mon problème ?
Merci
Amicalement
Siesting Hoax (qui a de plus en plus chaud)

"Sitting Hoax" <http://cerbermail.com/?GSQ36o9bFb> a écrit dans le message
de news:
Exactement la syntaxe qu'il me fallait,
merci beaucoup anonymousA ;-)
Amicalement
Siesting Hoax

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

Bonjour,

une réponse globale

1)pour un Userform p.e. si on a cliqué sur le bouton celui-ci est
forcément
'actif à ce moment-là.
'
'Private Sub CommandButton1_Click()
'MsgBox ActiveControl.Object.Caption
'End Sub
'
'2) pour un objet OLE dans un onglet, dans l'exemple celui-ci s'appelle
CBTATA
'
'Private Sub CBTATA_Click()
'MsgBox ActiveSheet.OLEObjects("CBTATA").Object.Caption
'ou directement
'MsgBox CBTATA.Object.Caption
'End Sub
'
'3)pour un objet xlButton issu de la barre de formulaires et placé
dans
'l 'onglet, le code suivant est à mettre dans la macro qui est
affectée au
'bouton en supposant que le bouton s'appelle Button1
'
'MsgBox ActiveSheet.shapes("Button1").TextFrame.Characters.Caption
'
'4)pour un objet bouton de commande d'une barre menus donc un controle,
lignes
'de code à rajouter dans la procédure OnAction stipulée
'
'MsgBox CommandBars.ActionControl.Caption

A+

Sitting Hoax wrote:
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un
userform.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)






Avatar
anonymousA
re,

Pour ton problème , c'est assez logique puisqu'un label ne peut
recevoir le focus donc ne peut être actif. Pour s'en sortir et pour
éviter de répeter dans chacun des clics la même chose,un petit coup
de module de classe devrait le faire. Ceci dit si tous tes labels font
des choses différentes lors d'un click, il faudra gérer cette affaire
sachant que par nature, en présence de 2 evenements click pour le
même label ( l'un contenu dans le code du userform et l'autre
référencé par le module de classe), c'est celui du contenur le +
proche qui déclenche le 1er, à savoir celui du userform.

Exemple: crée un module de classe appelé cls.Dans ce module écris

Public WithEvents lbl As MSForms.Label

Private Sub lbl_Click()
MsgBox lbl.Name
End Sub

(exemple avec 3 labels) Dans le code du userform qui abrite les labels,
écris

Dim txtlbl(1 To 3) As New Cls 'obligatoire pour eviter que à l'issue
de la Private Sub UserForm_Initialize 'les objets affectés à txtarr
soient perdus

Private Sub UserForm_Initialize()

For i = 1 To 3
Set txtlbl(i).lbl = Me.Controls("Label" & i)
Next

End Sub

Dans ces conditions quand tu cliqueras sur l'un quelconque des labels,
leur nom s'affichera

A+


Sitting Hoax wrote:
Bon, je reviens vers vous,
because ça ne marche pas :-(
j'ai un Userform avec des Labels qui activent une macro,
et un CommandButton1 dans l'Userform,
mais la macro 'MsgBox ActiveControl.Object.Caption
me donne toujours le même renseignement, à savoir "CommandButton1"
Je voudrais que la macro me renvoie le "Name"du Label qui active la macro ou
bien "Caption".
"ActiveControl" apparemment ne concerne que le boutons de commande, même
quand ce n'est pas lui qui active la macro.

c'est justement pour m'éviter de mettre dans chaque marcro Label_click le
nom dudit Label,
une seule macro devant donner le nom de n'importe quel Label.
Comprenez vous mon problème ?
Merci
Amicalement
Siesting Hoax (qui a de plus en plus chaud)

"Sitting Hoax" <http://cerbermail.com/?GSQ36o9bFb> a écrit dans le mess age
de news:
Exactement la syntaxe qu'il me fallait,
merci beaucoup anonymousA ;-)
Amicalement
Siesting Hoax

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

Bonjour,

une réponse globale

1)pour un Userform p.e. si on a cliqué sur le bouton celui-ci est
forcément
'actif à ce moment-là.
'
'Private Sub CommandButton1_Click()
'MsgBox ActiveControl.Object.Caption
'End Sub
'
'2) pour un objet OLE dans un onglet, dans l'exemple celui-ci s'appelle
CBTATA
'
'Private Sub CBTATA_Click()
'MsgBox ActiveSheet.OLEObjects("CBTATA").Object.Caption
'ou directement
'MsgBox CBTATA.Object.Caption
'End Sub
'
'3)pour un objet xlButton issu de la barre de formulaires et placé
dans
'l 'onglet, le code suivant est à mettre dans la macro qui est
affectée au
'bouton en supposant que le bouton s'appelle Button1
'
'MsgBox ActiveSheet.shapes("Button1").TextFrame.Characters.Caption
'
'4)pour un objet bouton de commande d'une barre menus donc un controle,
lignes
'de code à rajouter dans la procédure OnAction stipulée
'
'MsgBox CommandBars.ActionControl.Caption

A+

Sitting Hoax wrote:
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un
userform.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)








Avatar
Sitting Hoax
ça marche bien cette fois,
un peu complexe, mais ça va ;-))
Merci encore
Amicalement
Siesting Hoax qui cette fois ne va pas tarder à la faire (la sieste)
"anonymousA" a écrit dans le message de news:

re,

Pour ton problème , c'est assez logique puisqu'un label ne peut
recevoir le focus donc ne peut être actif. Pour s'en sortir et pour
éviter de répeter dans chacun des clics la même chose,un petit coup
de module de classe devrait le faire. Ceci dit si tous tes labels font
des choses différentes lors d'un click, il faudra gérer cette affaire
sachant que par nature, en présence de 2 evenements click pour le
même label ( l'un contenu dans le code du userform et l'autre
référencé par le module de classe), c'est celui du contenur le +
proche qui déclenche le 1er, à savoir celui du userform.

Exemple: crée un module de classe appelé cls.Dans ce module écris

Public WithEvents lbl As MSForms.Label

Private Sub lbl_Click()
MsgBox lbl.Name
End Sub

(exemple avec 3 labels) Dans le code du userform qui abrite les labels,
écris

Dim txtlbl(1 To 3) As New Cls 'obligatoire pour eviter que à l'issue
de la Private Sub UserForm_Initialize 'les objets affectés à txtarr
soient perdus

Private Sub UserForm_Initialize()

For i = 1 To 3
Set txtlbl(i).lbl = Me.Controls("Label" & i)
Next

End Sub

Dans ces conditions quand tu cliqueras sur l'un quelconque des labels,
leur nom s'affichera

A+


Sitting Hoax wrote:
Bon, je reviens vers vous,
because ça ne marche pas :-(
j'ai un Userform avec des Labels qui activent une macro,
et un CommandButton1 dans l'Userform,
mais la macro 'MsgBox ActiveControl.Object.Caption
me donne toujours le même renseignement, à savoir "CommandButton1"
Je voudrais que la macro me renvoie le "Name"du Label qui active la macro
ou
bien "Caption".
"ActiveControl" apparemment ne concerne que le boutons de commande, même
quand ce n'est pas lui qui active la macro.

c'est justement pour m'éviter de mettre dans chaque marcro Label_click le
nom dudit Label,
une seule macro devant donner le nom de n'importe quel Label.
Comprenez vous mon problème ?
Merci
Amicalement
Siesting Hoax (qui a de plus en plus chaud)

"Sitting Hoax" <http://cerbermail.com/?GSQ36o9bFb> a écrit dans le message
de news:
Exactement la syntaxe qu'il me fallait,
merci beaucoup anonymousA ;-)
Amicalement
Siesting Hoax

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

Bonjour,

une réponse globale

1)pour un Userform p.e. si on a cliqué sur le bouton celui-ci est
forcément
'actif à ce moment-là.
'
'Private Sub CommandButton1_Click()
'MsgBox ActiveControl.Object.Caption
'End Sub
'
'2) pour un objet OLE dans un onglet, dans l'exemple celui-ci s'appelle
CBTATA
'
'Private Sub CBTATA_Click()
'MsgBox ActiveSheet.OLEObjects("CBTATA").Object.Caption
'ou directement
'MsgBox CBTATA.Object.Caption
'End Sub
'
'3)pour un objet xlButton issu de la barre de formulaires et placé
dans
'l 'onglet, le code suivant est à mettre dans la macro qui est
affectée au
'bouton en supposant que le bouton s'appelle Button1
'
'MsgBox ActiveSheet.shapes("Button1").TextFrame.Characters.Caption
'
'4)pour un objet bouton de commande d'une barre menus donc un controle,
lignes
'de code à rajouter dans la procédure OnAction stipulée
'
'MsgBox CommandBars.ActionControl.Caption

A+

Sitting Hoax wrote:
Bonjour,
je voudrais trouver le nom de l'objet qui lance une macro dans un
userform.
Pour un objet d'une feuille, c'est Application.Caller,
mais dans un Userform, pour un bouton ou autre objet
qui lance une macro, je ne trouve pas,
MsgBox Application.Caller
suffit dans une feuille, mais là, je sèche.
Pouvez vous me renseigner svp ?
Merci d'avance
Amicalement
Siesting Hoax (qui a bien chaud avec cette canicule)