Probleme suppression item listbox [Résolu]

Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 7 févr. 2012 à 11:54 - Dernière réponse :  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.
Afficher la suite 

9 réponses

Répondre au sujet
NHenry 14129 Messages postés vendredi 14 mars 2003Date d'inscription 19 avril 2018 Dernière intervention - 7 févr. 2012 à 12:56
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
Utilisateur anonyme - 7 févr. 2012 à 12:59
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 7 févr. 2012 à 13:22
0
Utile
@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.
Commenter la réponse de Sentynel
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 7 févr. 2012 à 13:25
0
Utile
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 !
Commenter la réponse de Sentynel
Utilisateur anonyme - 7 févr. 2012 à 13:27
0
Utile
Tu es bien en VB.Net?
As-tu testé mon code?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 7 févr. 2012 à 13:34
0
Utile
@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...)
Commenter la réponse de Sentynel
Utilisateur anonyme - 7 févr. 2012 à 13:38
0
Utile
Re:
Chez moi ça marche "nikel", il doit y avoir autre chose...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Sentynel 86 Messages postés jeudi 7 janvier 2010Date d'inscription 13 juillet 2013 Dernière intervention - 7 févr. 2012 à 13:46
0
Utile
@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.
Commenter la réponse de Sentynel
Utilisateur anonyme - 7 févr. 2012 à 16:10
0
Utile
Eh bah...
Tu mets True à la place de False....


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.