Bonjour,
C'est sûrement très simple mais je n'y arrive pas alors je fais encore une fois appel a vous et a vos compétences !!!
J'ai un userform ou il y a une centaine de label que je déplace a convenance mais quand je souhaites faire passer l'étiquette que je manipule dessus une autre, ça ne fonctionne pas.
voici le module de classe:
voici les modules dans l'userform
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 ' Sur souris appuyée Private Sub goLabel_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) ' Si bouton gauche If Button = vbKeyLButton Then ' Conserve la position du clic gClicX = x gClicY = Y ' Appelle la procédure DragMouseDown du formulaire CallByName goUserForm, "DragMouseDown", VbMethod, goLabel End If End Sub ' Sur souris déplacée Private Sub goLabel_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) ' Si bouton gauche If Button = vbKeyLButton Then ' Déplace l'étiquette en fonction de sa position courante, de la position du clic et de la position ' de la souris déplacée sur l'étiquette goLabel.Left = goLabel.Left - (gClicX - x) goLabel.Top = goLabel.Top - (gClicY - Y) ' Appelle la procédure DragMouseMove du formulaire CallByName goUserForm, "DragMouseMove", VbMethod, goLabel End If End Sub ' Sur souris relâchée Private Sub goLabel_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single) ' Si bouton gauche If Button = vbKeyLButton Then ' Appelle la procédure DragMouseUp du formulaire CallByName goUserForm, "DragMouseUp", VbMethod, goLabel End If End Sub
ça fonctionne bien quand je manipule les étiquettes mais quand j'initialise l'userform, les positions se remettent a leurs positions initiales !!! grrrrrrrrr
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ' Sur souris appuyée sur l'étiquette pLabel Public Sub DragMouseDown(pLabel As MSForms.label) End Sub ' Sur souris déplacée sur l'étiquette pLabel Public Sub DragMouseMove(pLabel As MSForms.label) pLabel.ZOrder (0) End Sub ' Sur souris relâchée sur l'étiquette pLabel Public Sub DragMouseUp(pLabel As MSForms.label) pLabel.ZOrder (0) End Sub
Au début j'avais pensé a renvoyer l'info du zorder dans la feuille Excel pour pouvoir mieux gérer par la suite mais je n'arrive pas a trouver le code qui va bien !!!?
j'ai essayé le .zorderposition mais sans resultats
Peut être que ce n'est pas la bonne piste???? , quelqu'un s'est il déjà penché sur le problème??
merci d'avance
phileas
Partager