Je suis actuellement en train de développer un programme en VBA mais je rencontre quelques difficultés sur mes Listbox. Je m'explique....
J'ai plusieurs ListBox présentes dans mon fichier. Via un glisser-déposer, il m'est possible de remplir plusieurs ListBox à partir d'une ListBox générale reprenant l'ensemble de mes données.
Le problème est que lorsque je glisse et dépose un item de ma ListBox générale vers ma ListBox2, cette dernière (ListBox2) se décale de quelques milliimètres vers le bas... j'ai beau regardé sur le net mais aucune solution apportées...
Je voudrai faire deux remarques avant de poursuivre ce sujet.
@ucfoutu
Il est vrai que mon premier message manquait de contenu. Je penserai dans l'avenir à fournir un extrait de code dès ma première question pour au moins vous aiguiller dans votre analyse.
@Cmarcotte
Tout en restant poli, je n'ai pas du tout aimé le ton de vos réponses. Si mes questions vous semble bêtes, rien de vous oblige à y répondre!!! Pour information, vous verrez que vos ébauches de solution ne corrigent pas mon problème. Si vous m'auriez demandé un peu plus d'information sur mon code général, vous auriez probablement mieux cerné mon problème !!! De plus, un débutant comme moi ne sait pas forcément cerner quelles informations vous avez besoin pour en retour nous venir en aide. En regardant votre profil, j'aurai pu croire que vous auriez un peu plus de patience et d'humilité envers d'autres n'ayant peut être pas votre compétence en programmation vba, mais en ayant très certainement d'autres!!!
Pour en revenir au sujet : la solution au déplacement inexpliqué de mes Listbox se trouve à l'adresse d'un autre forum...
Bonjour,
Les causes peuvent être multiples, mais toutes résultant de tes propres instructions. Et sans voir à la fois ton code et ta "construction", on ne pourrait que faire des hypothèses à l'infini, hein ...
Ce qui devrait mieux te faire maintenant comprendre la raison du point 8 du règlement de ce forum.
Cet aspect avait pourtant été rappelé à ton attention lors de ta
discussion précédente Pour mémoire :
Prends l'habitude (indispensable si l'on veut rester sérieux) de présenter ici ton code par copier/coller strict du code que tu as écrit. Ce n'est manifestement pas le cas.
Je ne verrai le reste qu'après l'observation de cette discipline.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Désolé, je n'avais pas pas jugé nécessaire de mettre le code de mes ListBox car je pensais que le problème venait simplement d'une propriété mal paramétrée des ListBox...
Du coup, je vous joins le code. La ListBox7 est celle générale, celle dans laquelle je récupère les items et la ListBox1 est celle qui reçoit l'item sélectionné.
'*** LISTBOX GENERALE
Private Sub ListBox7_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
phase = ListBox7.Value
If IsNull(phase) Then Exit Sub
MyDataObject.SetText ListBox7.Value
Effect = MyDataObject.StartDrag
End If
End Sub
'*** LISTBOX A REMPLIR
Private Sub ListBox1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As Long, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Cancel = True
Effect = 1
End Sub
Private Sub ListBox1_BeforeDropOrPaste(ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As Long, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
Effect = 1
ListBox1.AddItem Data.GetText
ListBox1.Height = 68.25
ListBox1.Width = 237.75
Ligne = 11
j = 22
Worksheets("Sauvegarde données").Range("A11:A50").ClearContents
Range("M22:M25").ClearContents
If ListBox1.ListCount > 0 Then
For i = 0 To ListBox1.ListCount - 1
Worksheets("Sauvegarde données").Cells(Ligne, 1) = Worksheets("Feuille de route").ListBox1.List(i)
Cells(j, 13) = ListBox1.List(i)
Ligne = Ligne + 1
j = j + 1
Next
End If
End Sub
1) Ce ne sont pas (je viens d'essayer) tes instructions de glisser-déposer qui dont responsables (aucun déplacement constaté chez moi !)
la cause est donc à chercher ailleurs dans ton code.
2) que viennent faire ces 2 lignes :
ListBox1.Height = 68.25
ListBox1.Width = 237.75
dans le glisser/déposer ? Tu n'as pas à redimensionner sans cesse ainsi. A ne faire qu'une seule fois, au lancement de ton appli.
3) sur quoi (feuille ou userform) sont ces listboxes ?
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
me permettaient de renseigner la taille exacte de ma ListBox. Car lorsque j'utilisais le glisser-deposer, la largeur de la ListBox s'adaptait automatiquement.
OK Cmarcotte, j'ai déjà regardé les propriétés... par contre je vais regarder Savesetting et getssings.
OK Cmarcotte, j'ai déjà regardé les propriétés... par contre je vais regarder Savesetting et getssings.
Décidément. Quand tu as enregistré la valeur des deux propriétés dans le registre, soit manuellement, soit avec savesettings au début du programme, tu peux utiliser l'événement change du ListBox pour les remettre.