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:
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
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
' 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
ça fonctionne bien quand je manipule les étiquettes mais quand j'initialise l'userform, les positions se remettent a leurs positions initiales !!! grrrrrrrrr

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