SUPPRESSION EN BOUCLE DANS UNE LISTEBOX [Résolu]

Signaler
Messages postés
84
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
14 décembre 2016
-
Messages postés
21
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
16 avril 2010
-
Bonjour à tout le monde,

Je reviens ici pour m'aider à résoudre un petit bug ... (environnement VB6).

Sur un formulaire, j'ai une listebox qui présente une liste d'éléments. Sur cette liste, la case à cocher est affichée, et tous les éléments sont sélectionnés.

J'ai un bouton sur ce form qui execute le code suivant :

choix = MsgBox("Confirmez-vous la suppression ?", vbYesNo + vbCritical, "Confirmation de suppression")
If choix = vbYes Then
    For i = 0 To Liste.ListCount - 1
        If Liste.Selected(i) = True Then
            sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.Text, 1, 6) & "*'"
            db.Execute sql
        End If
    Next i
    MsgBox "Suppression effectuée !", vbOKOnly + vbInformation, "Message"


Le problème que j'ai est que seulement un élément est supprimé (le dernier en l'occurence) alors que je voudrais qu'ils le soient tous ....

Merci pour vos pistes.

Bien cordialement
Jerome

4 réponses

Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
6
Bonjour,
Affiche ta sql (par msgbox, par exemple) et tu vas très vite comprendre pourquoi !
Messages postés
84
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
14 décembre 2016

En effet, ma listebox comportant 3 éléments, en affichant ma commande SQL en msgbox, je vois que mon code boucle sur la même référence, c'est-à-dire la dernière.

C'est mon 'For i = 0 to liste.listecount -1' qui cloche je pense.
Messages postés
84
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
14 décembre 2016

C'est bon, je viens de trouver. Avec ceci ça va beauicoup mieux :

sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.List(i), 1, 6) & "*'"


Merci :-)
Messages postés
21
Date d'inscription
vendredi 13 mars 2009
Statut
Membre
Dernière intervention
16 avril 2010

For i = 0 To Liste.Count - 1
        If Liste.item(i).eval(Liste.selectedItem) Then
            sql = "DELETE * from T_SOLUCES where id like '*" & Mid(Liste.item(i).Text, 1, 6) & "*'"
            db.Execute sql
        End If
    Next i