Pb de doublons dans une listview

Résolu
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011 - 30 déc. 2006 à 10:07
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 30 déc. 2006 à 14:32
Bonjour,

voila sur ma forme j'ai une listview qui comporte des doublon. j'ai essayé ceci mais sa ne marche pas :s ou c'est trop car quand j'execute sa plante
Est-ce qqu'un aurait une solution pour moi
' source reprise de ce forum
For p = 1 To frmsrvrézo.lvw1.ListItems.Count
For q = 1 To i - 1
If frmsrvrézo.lvw1.ListItems.Item(p) = frmsrvrézo.lvw1.ListItems.Item(q) Then
 frmsrvrézo.lvw1.ListItems.Remove (p)
 i = i - 1
Exit For
End If
Next
Next

merci d'avnace dodo1309

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 déc. 2006 à 10:35
Essaye plutôt un truc du genre :

For p = frmsrvrézo.lvw1.ListItems.Count To 1 Step -1
For q = frmsrvrézo.lvw1.ListItems.Count To 1 Step -1
If frmsrvrézo.lvw1.ListItems(p).Text = frmsrvrézo.lvw1.ListItems(q).Text Then
 frmsrvrézo.lvw1.ListItems.Remove (q)
End If
Next
Next

Pas sûr que cà marche mieux, à cause de la première boucle qui risque encore d'itérer sur des élements supprimés, mais ce sera déjà un peu plus cohérent.

Sinon, il existe un moyen plus simple : tester si un élément est déjà dans la liste lors de l'ajout, ou trier la liste, et comparer les éléments avec les éléments suivants, ou carrément recontruire une liste des éléments sans les doublons avant de les réinsérer dans le listview.
3
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
30 déc. 2006 à 10:50
Salut,

Comme ça, ça marche :

  For p = frmsrvrézo.lvw1.ListItems.Count To 2 Step -1
    For q = p - 1 To 1 Step -1
      If frmsrvrézo.lvw1.ListItems.Item(p) = frmsrvrézo.lvw1.ListItems.Item(q) Then
        frmsrvrézo.lvw1.ListItems.Remove (p)
        Exit For
      End If
    Next
  Next
3
dodo1309 Messages postés 218 Date d'inscription mercredi 17 mai 2006 Statut Membre Dernière intervention 30 mai 2011
30 déc. 2006 à 12:07
merci a vous deux les méthode marche bien .

Darksidious ta deuxième solution marche en controlant l'ajout dans la listview 
 

Allez @+ et bonne fêtes de fin d'anneé
0
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 1
30 déc. 2006 à 13:15
Bonjour a tous,
j'utilise une autre méthode meilleure ou pire, je ne sait pas (?)

1. Je met la listview par ordre alphabétique sur la colonne concernée
2. Je pars de la dernière ligne jusqu'a la seconde par une boucle et je supprime la ligne si elle est semblable a la précédente

***************** Exemple *****************
ListView1.SortOrder = lvwAscending
ListView1.SortKey = NoColonne
ListView1.Sorted = True
ListView1.Sorted = False

For T = 1 To ListView1.ListItems.Count - 1
ListView1.ListItems(T).SubItems(2) = ListView1.ListItems(T).SubItems(2)
ListView1.ListItems.Remove T
Next
0

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

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
30 déc. 2006 à 14:12
Oui c'est l'astuce que je donnais, mais cela implique d'avoir la colonne triée, ce qui n'est pas forcément toujours ce qui est voulu.
0
Le Papa de Thibaut Messages postés 53 Date d'inscription mercredi 22 novembre 2006 Statut Membre Dernière intervention 7 mars 2015 1
30 déc. 2006 à 14:17
oui effectivement, pardonne-moi, je n'avais pas lu jusqu'au bout
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
30 déc. 2006 à 14:32
Salut,

bien qu'un peu plus lourd, les collections évitent les doublons... (avec la clé)
Ca peut être pratique !

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous