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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    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
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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 : 1002
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
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    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.
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    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.
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

  6. #6
    Responsable Access

    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
    Points : 14 524
    Points
    14 524
    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.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Merci de vous intéresser a mon problème.
    Le souci n'est pas de réaliser le drag and drop mais que celui ci se fasse à l'endroit ou le curseur apparaît lorsque la souris se trouve sur le textbox.
    et pour l'instant, je n'ai pas trouvé de réponse.
    J'utilise l'astuce de Patricktoulon mais le texte ne se place pas toujours au bon endroit surtout lorsqu'il y a des retour chariots.
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonsoir harkam
    nikel
    par contre je ne trouve pas cette aide concernant le drag and drop listbox j'ai trouvé par contre de (textbox a textbox)
    j'ai donc testé ton code et visiblement le fait de mettre le " StartDrag"au dataobject enleve le focus de la listbox et le donne au textbox en donnant un selstart quand on est dessus avec la souris
    je ne savais pas
    dans l'aide j'ai tapé (drag drop listbox )
    je tourne sur 2007
    edit:
    c'est bon je l'ai trouvé dans mousemove tout court
    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

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    nala
    la solution de Arkham fonctionne tres bien dans un textbox multiline et ce place tres bien (j'ai testé)
    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

  10. #10
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Ben chez moi, cela ne fonctionne pas.
    Pourrais tu me mettre ton classeur en pièce jointe afin que je vois ce qui cloche chez moi ?
    voila le code que j'ai mis pour le textbox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub TB1_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
     
    Cancel = True
    Effect = 1
    If Len(TB1.Value) = 0 Then
        TB1.Value = Data.GetText
    Else
        TB1.Value = Left(TB1.Value, TB1.SelStart) & Data.GetText & Right(TB1.Value, Len(TB1.Value) - TB1.SelStart)
    End If
    End Sub
    Merci d'avance
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    tu n'a rien a mettre dans le textbox NADA!!!
    juste la sub que t'a donné Arkham en mettant le nom de ta listbox bien sur
    et rien d'autre !!!!!

    Nom : demo2.gif
Affichages : 887
Taille : 140,5 Ko
    Fichiers attachés Fichiers attachés
    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

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mars 2004
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 52
    Points : 31
    Points
    31
    Par défaut
    Super , ça marche.
    Je ne voyais pas cela aussi simple.
    Du coup, j'avais conservé tout mon code précédent.

    Merci à Patricktoulon et a arkham.

    Sujet résolu
    N'oubliez pas le tag Résolu si le problème l'est.
    ;-)

+ 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