IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Drag and drop dans un textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut Drag and drop dans un textbox
    Bonjour à tous,
    J'aimerai, en utilisant le drag and drop, pouvoir construire un texte à l'aide de phrases prises dans un litsbox.
    J'arrive à faire glisser mes phrases du listbox vers le textbox. En revanche, je n'arrive pas à les placer a l'endroit ou se trouve le curseur lorsque je lâche le bouton de la souris.
    La seule "solution" que j'ai trouvée est de sélectionner dans le textbox l'endroit ou je veux déposer ma phrase puis ensuite faire un glisser déposer.
    Quelqu'un aurait il une solution ?

    Merci d'avance

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir
    je ne crois pas qu'avec lesdraganddrop/over tu puisse lefaire
    d'unepart parce que quand tu apuie avec le bouton de la souris dans la listebox elle prend le focus et l'evenement est libéréque l'ors du mouseup que tu soit encore dessus ou pas

    cependant

    voici une petite astuce quiconsiste a cliquer sur un item de ta liste et a cliquer a un endroit precis dans le text du textbox et l'item que tu a selectionner va se placer ici
    si le textbox est vide bien evidement l'item va se placer au debut
    tu constatera que j'utilise les mouse up
    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
    Dim var
    Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        var = ListBox1.List(ListBox1.ListIndex, 0)
    End Sub
     
    Private Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
        With TextBox1
            pos = .SelStart
            If pos = 0 And TextBox1.Value = "" Then
                TextBox1 = var
            Else
                .Value = Mid(.Value, 1, pos) & var & Mid(.Value, pos + 1)
            End If
        End With
    End Sub
    Private Sub UserForm_Activate()
        ListBox1.List = Array("toto", "titi", "riri", "fifi", "loulou")
    End Sub
    Nom : demo2.gif
Affichages : 1113
Taille : 94,8 Ko
    je crois que tu n'aura pas mieux a ma connaissance
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    Bonsoir Patricktoulon et merci de ta réponse.

    Je vais utiliser ton astuce.
    J'avais espéré une solution car lorsqu'on déplace la souris sur le textbox après avoir sélectionné un item, on voit un curseur qui se déplace avec la souris.

    Je laisse le sujet ouvert quelque temps si jamais quelqu'un avait une astuce pour réaliser un vrai drag and drop.

    Encore merci pour ton aide.

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    J'avais espéré une solution car lorsqu'on déplace la souris sur le textbox après avoir sélectionné un item, on voit un curseur qui se déplace avec la souris.
    pas en restant apuyé comme si tu voulais draguer c'est impossible car le textbox ne peut en aucun cas prendre le focus hors pour qu'il y est un selstart il faut qu'il est le focus

    fait le test reste appuyé sur ta listbox en selectionnant un item et promene toi sur le textbox tu verra tu n'aura pas le carret(curseur),impossible !!!
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Par défaut
    Bonsoir Patricktoulon,

    J'ai fait le test et j'ai bien un curseur qui se déplace dans le textbox.
    Il suit les déplacements de la souris.
    En revanche, ce curseur est un peu large que le curseur quand tu fais une sélection dans le textbox en cliquant directement dessus.

    Mais la solution que tu m'as proposée fonctionne très bien ... sauf lorsqu'il y a des retour chariot dans le textbox.
    Dans ce cas, l'insertion du texte ne se fait pas au bon endroit.
    Mais en cherchant, je vais trouver une solution.

    Encore merci de ton aide.

  6. #6
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bonjour,

    Il suffit d'ajouter une opération de drag sur MouseMove de la ListBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub MaListBox_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Dim MyDataObject As DataObject
    If Button = 1 Then
        Set MyDataObject = New DataObject
        Dim Effect As Integer
        MyDataObject.SetText MaListBox.Value
        Effect = MyDataObject.StartDrag
    End If
    End Sub
    Pour information le code est issu de l'aide Excel qui explique comment faire du drag & drop entre deux ListBox.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Drag And Drop dans une Grid
    Par amandinerenard dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 13/05/2013, 17h41
  2. Drag and drop dans un input
    Par kriekbellevue dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/12/2006, 20h55
  3. [VB.net] Drag and drop dans une Treeview
    Par gégécap dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/10/2006, 10h05
  4. [VB.NET]Drag and Drop dans une Listview
    Par gégécap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 23/08/2006, 18h41
  5. Drag and drop dans un TTreeView
    Par BigBenQ dans le forum C++Builder
    Réponses: 3
    Dernier message: 07/10/2005, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo