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

Detection du bouton à l'origine de l'action

3 réponses
Avatar
Christophe CAMPAIN
Bonjour à tous,

Admettons que 3 bouttons différents déclenchent la même procédure ; comment
faire pour savoir quel bouton est à l'origine de l'action ?

Par avance merci,

Kristof

3 réponses

Avatar
Thierry Euzenot
Si ce sont des contrôles VBA et non des boutons de formulaire, une solution
simple est de passer une valeur dans une variable publique

Dans ta macro d'enclenchement du bouton tu mets Flag = 1, Flag = 2, Flag 3, etc.

Et ensuite tu fais un test

Select case Flag
Case 1
Bouton 1
Case 2
Bouton 2
Case 3
Bouton 3
End Select

Ainsi tu sais d'où proviens le click ;o)

Heu je suis pas un vrai pro du VBA alors peut-être qu'il existe une fonction
plus appropriée ^^

"Christophe CAMPAIN" a écrit
dans le message de news:
Bonjour à tous,

Admettons que 3 bouttons différents déclenchent la même procédure ;
comment

faire pour savoir quel bouton est à l'origine de l'action ?

Par avance merci,

Kristof




Avatar
garnote
Salut Kristof,

Essaie l'instruction suivante :

MsgBox Application.Caller

Serge

"Christophe CAMPAIN" a écrit
dans le message de news:
Bonjour à tous,

Admettons que 3 bouttons différents déclenchent la même procédure ;
comment

faire pour savoir quel bouton est à l'origine de l'action ?

Par avance merci,

Kristof




Avatar
Christophe CAMPAIN
Merci à tous,

Mais ces solutions ne conviennent pas ; entre autre parceque mon problème
réel est sur Access mais que je pensait qu'il se poserait de la même manière
sur Excel (c'est pas tout à fait le cas...): L'instruction MsgBox
Application.Caller n'est pas disponible sur ma version d'Access.
Il existe bien l'instruction ActiveControl , mais elle ne s'applique qu'aux
contrôles pouvant recevoir le focus... et dans mon cas il sagit de contrôles
image.

Merci tout de même pour les pistes

@+
kristof


Pour info, ci-joint mon post sur le forum Access

-----------------------------
Mon formulaire contiens plusieur contrôles images et je cherche à détecter
celui sur lequel on clique avec la souris pour l'encadrer de rouge . Ma
procédure actuelle est :
'----------------------
Private Sub Image1_Click()
Dim Ctl As Control
' RAZ des mises en forme des contrôles image
For Each Ctl In Me
If Ctl.ControlType = 103 Then 'Si c'est un cadre image
With Ctl
.BorderColor = RGB(0, 0, 0)
.BorderWidth = 0
End With
End If
Next Ctl

With Image1 'C'set là qu'il me faudrait le nom du cadre image sur lequel on
viens de cliquer
.BorderColor = RGB(255, 0, 0)
.BorderWidth = 1
End With
End Sub
'-------------------------

Ca marche, mais s'il faut remettre ça pour chaque contrôle image, c'est un
peu lourd comme méthode.
C'est pourquoi je cherche à détecter le contrôle image sur lequel on clique
pour appeler ma procédure, comme ça peu importe le nombre de contrôles
images...
--------------------------------
"Christophe CAMPAIN" a écrit
dans le message de news:
Bonjour à tous,

Admettons que 3 bouttons différents déclenchent la même procédure ;
comment

faire pour savoir quel bouton est à l'origine de l'action ?

Par avance merci,

Kristof