Probleme suppression item listbox [Résolu]

Sentynel
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- 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 

Votre réponse

9 réponses

Meilleure réponse
NHenry
Messages postés
14297
Date d'inscription
vendredi 14 mars 2003
Dernière intervention
14 novembre 2018
- 7 févr. 2012 à 12:56
3
Merci
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

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
Utilisateur anonyme - 7 févr. 2012 à 12:59
3
Merci
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

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Sentynel
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- 7 févr. 2012 à 13:22
0
Merci
@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
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- 7 févr. 2012 à 13:25
0
Merci
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
Merci
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
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- 7 févr. 2012 à 13:34
0
Merci
@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
Merci
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
Messages postés
86
Date d'inscription
jeudi 7 janvier 2010
Dernière intervention
13 juillet 2013
- 7 févr. 2012 à 13:46
0
Merci
@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
Merci
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.