List box en vb6 additem et removeitem

cs_saul Messages postés 12 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 26 décembre 2003 - 16 oct. 2003 à 21:16
cs_jroy Messages postés 5 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 31 mars 2004 - 3 mars 2004 à 10:39
saul
Bonjour
Je dispose en vb6 de deux list box et d'un bouton command que je veux programmer pour qu'il me permette de transferer certains noms de la listbox 1 vers la listbox2 et de les supprimer de la listbox1 :
avec le code suivant
Private Sub cmdInactif_Click()
Dim i As Integer
For i = 0 To lstActif.ListCount - 1
If lstActif.Selected(i) Then
lstInactif.AddItem (lstActif.List(i))
End If
Next i
For i = 0 To lstActif.ListCount - 1
If lstActif.Selected(i) Then
lstActif.RemoveItem (lstActif.List(i))
End If
Next i
End Sub
cela ne marche pas alors que si je supprime la deuxième boucle il fait correctement le transfert de lisbox1 vers listbox2 en utilisant la première boucle
si je supprime la première boucle et que je laisse que la deuxième cela ne marche pas quand même alors qu'il me semble que j'utilise les mêmes règles pour programmer la boucle pour la propriété additem et pour la propriété removeitem
où est mon erreur
a l'avance merci ;c'est un peu long mais pour comprendre

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
16 oct. 2003 à 21:42
A mon avis, cela vient du fait que tu supprime les entrées de liste à partir du début : lorsque tu supprime une entrée de liste, les index des autres entrées qui suivent sont modifié, se qui n'est pas top !

Pour pallier à ce problème : fait ta boucle dans l'autre sens :

For i = lstActif.ListCount - 1 To 0 Step -1
If lstActif.Selected(i) Then
lstActif.RemoveItem (lstActif.List(i))
End If
Next i

Logiquement, ce code devrait marcher... à tester.

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
stacco Messages postés 106 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 22 mai 2004
16 oct. 2003 à 21:46
il manque les valeurs true dans tes deux if

If lstActif.Selected(i)=true Then

stacco
0
cs_jroy Messages postés 5 Date d'inscription jeudi 19 juin 2003 Statut Membre Dernière intervention 31 mars 2004
3 mars 2004 à 10:39
ma réponse vient peut être un peu tard mais je viens d'être confronté au même probleme que Saul et la solution est simple, c'est tout simplement un problème de syntaxe :
le paramètre de la méthode removeItem est un index est non pas la valeur de l'item en question.

le code est donc le suivant :

lstActif.RemoveItem i

et non pas :

lstActif.RemoveItem (lstActif.List(i))
0
Rejoignez-nous