salut.
j’ai un listview contenant 2 colonnes : code et nom (les 2 de type string)
lors de l’affichage, j’ai des doublons dans le listview.
comment faire pour supprimer ces doublons. j’ai essayé avec ce code mais ça marche pas :
'------------------------------------------------
’ Supprimer les doublons de listview1
'------------------------------------------------
Dim tmp As String
Dim k, g As Integer
k = 0
Do While k <= ListView2.Items.Count - 1
tmp = ListView2.Items.Item(k).ToString
For g = k + 1 To ListView.Items.Count - 1
If tmp.Equals(ListView2.Items.Item(g)) Then
ListView2.Items.RemoveAt(g)
k -= 1
Exit For
End If
Next
k += 1
Loop
'------------------------------------------------
listView.removedoublons()
nan je rigole
Sub delete(ByVal listView1 As ListView)
Dim i As Integer = 0
Dim j As Integer
Dim lvi2 As ListViewItem
For Each lvi1 As ListViewItem In listView1.Items
j = i + 1
Do While j < listView1.Items.Count() - 1
lvi2 = listView1.Items.Item(j)
If lvi1.ToString().Equals(lvi2.ToString()) Then
listView1.Items.Remove(lvi2)
Else
j = j + 1
End If
Loop
i = i + 1
Next
End Sub
A mon avis le problème vient du fait que tu enlève à un indice via removeAt(), et lorsque tu enleve un élement, tous les indices sont décalés.
Merci pour le code ke tu m’as envoyé.
en fait, il y avait juste une petite chose à rectifier dans mon code, avec cette modification ça a marché :
Dim tmp As String
Dim k, g As Integer
k = 0
Do While k <= ListView2.Items.Count - 1
tmp = ListView2.Items(k).SubItems(0).Text <= là
For g = k + 1 To ListView.Items.Count - 1
If tmp.Equals(ListView2.Items(g).SubItems(0).Text) Then <= là
ListView2.Items.RemoveAt(g)
k -= 1
Exit For
End If
Next
k += 1
Loop
de tte façon, merci pour ton aide, j’en suis vraiment reconnaissante.
je garderai ton code pour une prochaine utilisation. :super: