glisser déposer un objets dans un userform (VBA)

  • Initiateur de la discussion Initiateur de la discussion A2H
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

A2H

Guest
Bonsoir
Je veux savoir s'il est possible de créer un code VBA pour glisser déposer un objet (Text, image) dans un userform), comme la cas d'un puzzle
exemple j'ai 3 textes et 3 TextBox et je veux deplacer avec la souris le text1 dans le textBox 3 , le texte2 dans le textbox1 …
Merci d'avance
 
Bonsoir.
Il devrait être possible de déplacer un Label en utilisant son évènement MouseMove.
Dans un petit UserForm muni d'un Label Label1 ceci marche :
VB:
Option Explicit
Dim X0 As Single, Y0 As Single

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   X0 = X: Y0 = Y
   End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   If Button = 0 Then Exit Sub
   Label1.Left = Label1.Left + X - X0
   Label1.Top = Label1.Top + Y - Y0
   End Sub
 
Dernière édition:
Bonsoir.
Il devrait être possible de déplacer un Label en utilisant son évènement MouseMove.
Dans un petit UserForm muni d'un Label Label1 ceci marche :
VB:
Option Explicit
Dim X0 As Single, Y0 As Single

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   X0 = X: Y0 = Y
   End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   If Button = 0 Then Exit Sub
   Label1.Left = Label1.Left + X - X0
   Label1.Top = Label1.Top + Y - Y0
   End Sub
Merci beaucoup pour la réponse, mais je veux le déplacer avec la souris (pointer, glisser, placer) drag & drop
 
Bonsoir.
Il devrait être possible de déplacer un Label en utilisant son évènement MouseMove.
Dans un petit UserForm muni d'un Label Label1 ceci marche :
VB:
Option Explicit
Dim X0 As Single, Y0 As Single

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   X0 = X: Y0 = Y
   End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   If Button = 0 Then Exit Sub
   Label1.Left = Label1.Left + X - X0
   Label1.Top = Label1.Top + Y - Y0
   End Sub
Merci beaucoup Dranreb pour votre aide le problème est régler pour le déplacement du label. Je v eux maintenant le déposer dans un textbox si vous avez une idée
Encore Merci
 
Bonjour.
Comme dit, il est possible que les évènements BeforeDragOver et BeforeDropOrPaste permettent de gérer tout ça, mais je n'ai aucune idée de comment ça marche.
Sinon, il serait toujours possible d'écrire une _MouseUp qui détecte de quelle TextBox le Label est le plus proche et affecte son .Caption à sa .Text et le remet à une position nominale
 
Re Dranreb

@Dranreb

C'est cette partie qui mémorise le texte de chaque Label

Set D = New DataObject
D.SetText Txt 'Txt variable label.caption
Effect = D.StartDrag

Le mieux ce serait un module de classe, si plus de contrôles; mais je ne sais pas faire.
 
Dernière édition:
Oui je m'en doutais un peu. J'ai vu aussi qu'il suffisait de le faire une seule fois au MouseDown. Je suis donc en train de chercher à utiliser le MouseMove pour déplacer le Label. Mais ça ne marche pas pour l'instant, et j'ai peur que quand ça marchera le relâchement ne sera pas perçu pour la TextBox cible parce que le pointeur sera sur le Label…
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
2 K
Retour