Je cherche à exploiter les propriétés (Button As Integer, Shift As Integer,
X As Single, Y As Single) des événements MouseDown, MouseMove et MouseUp.
Mon problème est le suivant :
- Soit plusieurs (1 à n) contrôles image disposés sur un formulaire (leur
nombre varie trés fréquement).
- Chaque contrôle image réagi à l'évènement MouseDown pour afficher les
coordonnées X et Y du pointeur de la souris (oui... je sais c'est pas trés
passionant comme action, mais c'est juste un exemple pour modéliser mon
problème...).
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox "X = " & X & " ; Y = " & Y
End Sub
Private Sub Image2_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox "X = " & X & " ; Y = " & Y
End Sub
Private Sub Image3_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox "X = " & X & " ; Y = " & Y
End Sub
....
Etc... pour tous les contrôles jusqu'au contrôle n
.....
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox "X = " & X & " ; Y = " & Y
End Sub
- Comment faire pour créer UNE procédure générique "BoutonSourisAppuyé" ,
valable pour tout contrôle image, du type :
Private Sub MonImageN_MouseDown(Button As Integer, Shift As Integer, X As
Single, Y As Single)
MsgBox "X = " & X & " ; Y = " & Y
End Sub
Mon orientation actuelle consiste à attribuer une procédure à la propriété
"OnMouseDown" lors de la création de chaque contrôle image (.OnMouseDown =
"=BoutonSourisAppuyé(""" & CtlImg.Name & """)") où CtlImg est le contrôle
image qui viens d'être créé par VBA).
Public Sub BoutonSourisAppuyé(NomContrôleImage as string)
Dim CtlImg as Controls
Set CtlImg = Controls( NomContrôleImage )
........
.........
End Sub
Ca marche trés bien pour des procédures n'utilisant pas les propriétés
(Button As Integer, Shift As Integer, X As Single, Y As Single)
Mais là c'est justement ce que je cherche à utiliser et je ne vois pas
comment récupérer ces propriétés...
Mdl.AddFromString vbCrLf & _ "Private Sub " & CtlImg.Name & "_MouseDown(" & CtlImg.Name & ", Button As Integer, Shift As Integer, X As Single, Y As Single)" & vbCrLf & _ " Call TaProc(Button, Shift, X, Y)" & vbCrLf & _ "End Sub" Set Mdl = Nothing
et ajoute les paramètres dans ta procédure commune:
Public Sub BoutonSourisAppuyé(NomContrôleImage as string, Button As Integer, Shift As Integer, X As Single, Y As Single)
Cordialement.
Christophe CAMPAIN
Bonjour Xavier,
Je n'ai pas le temps de tester ça ce soir, mais je m'y met dés demain matin. D'aprés ce que je comprends de ta procédure, tu programme directement un module depuis VBA. C'est une technique que je n'ai encore jamais testée, je te tiens au courant.
Merci pour ton aide,
@+ Kristof
"Xavier HUE" a écrit dans le message de news:82d501c431e1$5019d790$ Bonjour Christophe,
Dans ta procédure qui affecte l'évènement:
Dim Mdl As Module
Set Mdl = Forms("FrmAjoutProcCible").Module
Mdl.AddFromString vbCrLf & _ "Private Sub " & CtlImg.Name & "_MouseDown(" & CtlImg.Name & ", Button As Integer, Shift As Integer, X As Single, Y As Single)" & vbCrLf & _ " Call TaProc(Button, Shift, X, Y)" & vbCrLf & _ "End Sub" Set Mdl = Nothing
et ajoute les paramètres dans ta procédure commune:
Public Sub BoutonSourisAppuyé(NomContrôleImage as string, Button As Integer, Shift As Integer, X As Single, Y As Single)
Cordialement.
Bonjour Xavier,
Je n'ai pas le temps de tester ça ce soir, mais je m'y met dés demain matin.
D'aprés ce que je comprends de ta procédure, tu programme directement un
module depuis VBA. C'est une technique que je n'ai encore jamais testée, je
te tiens au courant.
Merci pour ton aide,
@+
Kristof
"Xavier HUE" <elxavpub@bupfree.fr> a écrit dans le message de
news:82d501c431e1$5019d790$a001280a@phx.gbl...
Bonjour Christophe,
Dans ta procédure qui affecte l'évènement:
Dim Mdl As Module
Set Mdl = Forms("FrmAjoutProcCible").Module
Mdl.AddFromString vbCrLf & _
"Private Sub " & CtlImg.Name
& "_MouseDown(" & CtlImg.Name & ", Button As Integer,
Shift As Integer, X As Single, Y As Single)" & vbCrLf & _
" Call TaProc(Button, Shift, X, Y)" &
vbCrLf & _
"End Sub"
Set Mdl = Nothing
et ajoute les paramètres dans ta procédure commune:
Public Sub BoutonSourisAppuyé(NomContrôleImage as string,
Button As Integer, Shift As Integer, X As Single, Y As
Single)
Je n'ai pas le temps de tester ça ce soir, mais je m'y met dés demain matin. D'aprés ce que je comprends de ta procédure, tu programme directement un module depuis VBA. C'est une technique que je n'ai encore jamais testée, je te tiens au courant.
Merci pour ton aide,
@+ Kristof
"Xavier HUE" a écrit dans le message de news:82d501c431e1$5019d790$ Bonjour Christophe,
Dans ta procédure qui affecte l'évènement:
Dim Mdl As Module
Set Mdl = Forms("FrmAjoutProcCible").Module
Mdl.AddFromString vbCrLf & _ "Private Sub " & CtlImg.Name & "_MouseDown(" & CtlImg.Name & ", Button As Integer, Shift As Integer, X As Single, Y As Single)" & vbCrLf & _ " Call TaProc(Button, Shift, X, Y)" & vbCrLf & _ "End Sub" Set Mdl = Nothing
et ajoute les paramètres dans ta procédure commune:
Public Sub BoutonSourisAppuyé(NomContrôleImage as string, Button As Integer, Shift As Integer, X As Single, Y As Single)
Cordialement.
Xavier HUE
Pour faire ce que tu souhaites, je ne vois pas d'autre solution.
J'ai testé l'insertion du code évènementiel, ça marche.
Cordialement.
Pour faire ce que tu souhaites, je ne vois pas d'autre
solution.
J'ai testé l'insertion du code évènementiel, ça marche.