Parce que tu n'as pas résolu le problème du .RemoveItem et du .ListCount, même si c'est plus subtil maintenant.
Si j'extrais la boucle de ton code on a
Do Until w = 0
If list_search.List(v, 0) = list_search.List(w, 0) And v <> w Then
list_search.RemoveItem (w)
Else
w = w - 1
End If
Loop |
Tu effectues un test entre deux éléments non stables d'une itération de boucle à l'autre.
Suivant si v > w, ou l'inverse, ou si w est le dernier élément de la liste (par exemple) ton .RemoveItem(w) va avoir des interférences différentes sur ton test « list_search.List(v, 0) = list_search.List(w, 0) »
C'est une mauvaise méthode de programmation.
Il vaudrait mieux remplir un tableau de référence avec les éléments de ta liste pour effectuer la comparaison.
Le contenu du tableau ne variant pas, les itérations de ta boucle seraient stables.