Insérer plusieurs champs d'une ListBox à l'autre

phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012 - 17 févr. 2006 à 14:18
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012 - 17 févr. 2006 à 15:57
slt,

J'ai deux Lisbox (L1 et L2), je sais tranférérer de L1 à L2 une ligne en clicuant su un bouton, mais ce que je voudrais c'est ppouvoir faire la même chose mais avec plusieurs lignes.

Explication:

Si dans L1 j'ai trois lignes avec : 1
2
3

je sélectionne 1 et 3 , je clique sur mon bouton (Transf) et dans une ligne de L2 j'obtiens: 1, 3

merci d'avance

8 réponses

cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
17 févr. 2006 à 14:34
Tu peux tansférer ces lignes seulement s'il exite la ligne dans L2 ou alors tu ajoute une ligne vide.

'code
Dim u As Long
For u = 0 To (L1.ListCount - 1)
If L1.Selected(u) = True Then L2.AddItem (L1.List(u))
Next u

Ce code marche si L2 a le meme nombre d'éléments que L1. Sinon tu te débrouilles avec des conditions pour ajouter des lignes vides dans L2 et voilà.
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
17 févr. 2006 à 14:45
je l'ai fais, ca marche bien, sauf que ca met pas sur la même ligne sur une nouvelle ligne achaque fois. Je voudrais mettre les données les unes a coté des autres pour chauques multiselections.

Une autre petite questionde comprehension: a quoi sert le -1 dans For u = 0 To (L1.ListCount - 1)??

Merci
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
17 févr. 2006 à 15:05
Listcount c'est la ligne suivante qui ne contient rien. C'est doonc une valeur qui indique la limite de la liste. Si tu as 4 éléments, Liscount sera à 5.
Sinon, je te l'ai dis, il faut insérer des lignes vides pour avoir ce que tu veux.

Public Function AddStringNull(LA as Long)
'LA => Numéro de la ligne à ajouter
Dim i as Long
If L2.listcount < LA then
for i = (LA - L2.listcount) to LA
L2.additem("")
Next i
End if
End Function

Voilà pour rajouter les lignes vides? Attention j'ai pas testé le code
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
17 févr. 2006 à 15:08
ok, ben merci, je vais voir tout ca
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
17 févr. 2006 à 15:10
'code final
Private Sub Ajout_Click()
Dim u As Long
For u = 0 To (L1.ListCount - 1)
If L1.Selected(u) = True Then AddStringNull(u): L2.AddItem (L1.List(u))
Next u
End sub

Public Function AddStringNull(LA as Long)
'LA => Numéro de la ligne à ajouter
Dim i as Long
If L2.listcount < LA then
for i = (LA - L2.listcount) to LA
L2.additem("")
Next i
End if
End Function
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 octobre 2010
17 févr. 2006 à 15:13
Oups petite erreur c'est pas additem qui fallait mettre

Private Sub Ajout_Click()
Dim u As Long
For u = 0 To (L1.ListCount - 1)
If L1.Selected(u) True Then AddStringNull (u): L2.List(u) (L1.List(u))
Next u
End Sub

Public Function AddStringNull(LA As Long)
'LA => Numéro de la ligne à ajouter
Dim i As Long
If L2.ListCount < LA Then
For i = (LA - L2.ListCount) To LA
L2.AddItem ("")
Next i
End If

End Function
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
17 févr. 2006 à 15:32
Au passage, le (-1) dans (ListCount-1) sert tout simplement à ne pas faire crasher ton programme.

Dans une ListBox, il y a ListCount éléments. Le premier est indexé 0. Donc le dernier est indexé (ListCount-1).

Si tu demandes List1.List(List1.ListCount), çà crashe car l'élément n'existe pas.

Manu
0
phenX Messages postés 704 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 28 août 2012
17 févr. 2006 à 15:57
ok merci pour toutes vos réponses
0
Rejoignez-nous