Probleme de supression dans une listview

Résolu
comtention Messages postés 85 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 10 janvier 2010 - 23 juil. 2006 à 23:37
comtention Messages postés 85 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 10 janvier 2010 - 24 juil. 2006 à 17:59
Bonsoir,

J'ai un petit problème avec une listview, j'ai le même problème avec une listbox de toutes façons. Enfait j'ai un textbox et une listview et j'essai de suprimer les lignes de la listview qui ne comprennent pas le mot dans la listview. Alors j'ai fait:

For a = 1 To Listv.ListItems.Count
If InStr(1, Listv.ListItems.Item(a).Text, Text1.Text) = 0 Then Listv.ListItems.Remove (a)
Next a

mais j'ai l'erreur "index out of bounds" je dois surment tester la valeur d'une ligne qui n'existe pas. J'ai essaillier de boucler jusque Listv.ListItems.Count -1 au cas où mais sa ne marche pas.

Merci d'avance pour votre réponse.

6 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
23 juil. 2006 à 23:49
essaye l'inverse:

    For a = Listv.ListItems.Count To 1 Step -1

Daniel
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
24 juil. 2006 à 01:53
Le Step même s'il apparait pas est 1 par défaut dans ta boucle d'origine

c'est la valeur qui va s'incrémenter à la variable "a" au prochain Next

   For a = 1 To Listv.ListItems.Count Step 1


à partir de là tu peux mettre l'incrément que tu veux en positif ou négatif, même une valeur décimale est possible

c'est fonction bien sûr du type de "a"

  pas = 2

  For a = 1 To Listv.ListItems.Count Step pas

        MsgBox a

        Next


l'important ici c'est de ne pas accéder à une Ligne qui n'existe plus parce qu'elle aura été supprimée

le .Count change et est décrémenté de 1 à chaque Remove

plus grave encore, toutes les Lignes qui suivent sont décalées

si tu supprimes la Ligne numéro 10, c'est la suivante donc la Ligne 11 qui devient la numéro 10,

donc n'aurait pas été traitée puisque le compteur "a" passant à 11 aurait traité la Ligne qui avait le numéro 12

(avant le Remove) bref un vrai meli melo ...

et plantage à la fin quand le compteur va dépasser le nombre de Lignes

Daniel
3
comtention Messages postés 85 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 10 janvier 2010
23 juil. 2006 à 23:57
Ooo yeah! tu peux m'expliquer le principe des steps c'est la premiere fois que vois sa. Merci beaucoup !
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
24 juil. 2006 à 01:59
tient un exemple pour supprimer toutes les Lignes et pourtant je ne supprime toujours que le premier:

    For a = 1 To Listv.ListItems.Count

        LV.ListItems.Remove 1

        Next

Daniel
0

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

Posez votre question
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
24 juil. 2006 à 02:03
oups j'ai oublié de changer LV c'est le nom de ma Listview

   For a = 1 To Listv.ListItems.Count

           Listv.ListItems.Remove 1

           Next

Daniel
0
comtention Messages postés 85 Date d'inscription dimanche 11 avril 2004 Statut Membre Dernière intervention 10 janvier 2010
24 juil. 2006 à 17:59
Alaize sa c'est de l'explication ! Merci beaucoup, a bientôt.
0
Rejoignez-nous