Probleme suppression item listbox

Résolu
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013 - 7 févr. 2012 à 11:54
 Utilisateur anonyme - 7 févr. 2012 à 16:10
Bonjour à tous,
J'ai un problème lors de la suppression d'un item spécifique dans une lisbox à partir d'une autre listbox.

Je voudrai que ma listbox1 supprime les éléments présent dans la listbox2 lorsque je clique sur un bouton.
(J'utilise ce procédé pour "ignorer" un item.)

Prenons comme exemple :

Listbox1 =
Pomme
Banane
Poire
Raisin


Et Listbox2 =
Poire


Il faudrai que quand j'appuie sur le bouton, le mot "poire" soit supprimer. Vous suivez ?

Voici mon code, le logiciel semble s'arrêter au mot trouver mais il me retourne une erreur de valeur 14 non valide pour "index"

        Dim i As Integer
        For i = ListBox1.Items.Count - 1 To 0 Step -1
            If InStr(ListBox2.Items(i), ListBox1.Items(i)) > 0 Then
                ListBox1.Items.RemoveAt(i)
            End If
        Next


Une petite solution ? s'il vous plait.

9 réponses

NHenry Messages postés 15116 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 9 mai 2024 159
7 févr. 2012 à 12:56
Bonjour,

4 choses :
- Actives Option Explicit et Option Strict (propriétés du projet)
- Retires l'import automatique de l'espace de nom Microsoft.VisualBasic (Onglet Références dans les propriétés du projet)
- A la place de tester si une chaine est contenue, utilises la méthode Equals
- Quand tu compares 2 liste, il y a une liste plus longue que l'autre, donc il y a un risque que tu sortes de l'espace sur l'une des 2, utilises plutôt 2 boucles for imbriquées.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, ce lien ou encore celui-ci[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
Utilisateur anonyme
7 févr. 2012 à 12:59
Bonjour,


Plus simple:
        For Rt As Integer = ListBox1.Items.Count - 1 To 0 Step -1
            If ListBox2.Items.Contains(ListBox1.Items.Item(Rt)) = False Then
                ListBox1.Items.RemoveAt(Rt)
            End If
        Next



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
3
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
7 févr. 2012 à 13:22
@NHenry : Bonjour, j'ai utiliser votre méthode de boucles for imbriquées, cela marche très bien mais quand je reclique sur le bouton une 2eme fois, l'item reviens...
Pour info, les items sont généré d'une base xml et sont donc ajouté dynamiquement.

Voici le code pour le moment :

        Dim i As Integer
        Dim i2 As Integer
        For i = ListBoxGames.Items.Count - 1 To 0 Step -1
            For i2 = ListBoxIgnoreList.Items.Count - 1 To 0 Step -1
                If InStr(ListBoxGames.Items(i), ListBoxIgnoreList.Items(i2)) > 0 Then
                    ListBoxGames.Items.RemoveAt(i)
                End If
            Next
        Next


Merci pour votre aide.
0
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
7 févr. 2012 à 13:25
Edit : Le problème ne viens pas de là ou je le pensais, j'ai une 3eme listbox me permettant de supprimer les items de la listbox 2. (car la listbox 2 est caché.)
En déplacent les items de la listbox2 vers la listbox 3, les items perds leurs majuscules, et ne sont donc pas reconnu.

Je pense que pour le reste je saurai me débrouiller, merci beaucoup !
0

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

Posez votre question
Utilisateur anonyme
7 févr. 2012 à 13:27
Tu es bien en VB.Net?
As-tu testé mon code?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
7 févr. 2012 à 13:34
@acive : Oui je suis bien en VB.net, j'ai testé ton code mais il me rapporté la même erreur que le mien. J'ai donc remodifié mon code en fonction de ce que m'a conseiller NHenry.
disons que j'ai certaines habitudes (c'est ca les vieux...)
0
Utilisateur anonyme
7 févr. 2012 à 13:38
Re:
Chez moi ça marche "nikel", il doit y avoir autre chose...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Sentynel Messages postés 85 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 13 juillet 2013
7 févr. 2012 à 13:46
@Acive : Euh, oui, pardons. Il marchais très bien mais je cherchais à faire le contraire
Ton code me retournais la valeur ignoré et supprimer tous les autres items que je voulais garder.
Avec mon code j'ai réussis à faire ce que je voulais, il me reste plus qu'à corriger un petit bug.

Merci encore.
0
Utilisateur anonyme
7 févr. 2012 à 16:10
Eh bah...
Tu mets True à la place de False....


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
Rejoignez-nous