Doublons toujours pas résolu [ devient fou ]

Résolu
Zer0Termi Messages postés 32 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 20 mai 2010 - 3 mai 2010 à 08:58
Zer0Termi Messages postés 32 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 20 mai 2010 - 3 mai 2010 à 10:08
Hello à toutes et à tous,

J'ai déjà posté sur ce sujet mais en vain, je relance donc une dernière fois ma demande (last tentative avant pétage d'ordi :D):

Vilà j'alimente une combobox à partir du choix fait dans une première combobox. L'ennuie c'est que j'ai des doublons et que je n'arrive pas les enlever ( depuis une semaine et demie quand même :). voici mon code qui, j'espère, vous seras utile:


Private Sub ComboBox2_Enter() ' Programme qui s'execute lorsque l'on clique sur la combobox pour définir la catégorie

If ComboBox4.Value <> "" Then
'on initiale la combo comme pour la combobox4
ComboBox2.Clear

'on récupère le contenu de la première combo
vVAr1 = ComboBox4.Value

'on remplit la seconde combo en se servant de la valeur de la première comme filtre
For Each c In Worksheets("Listes").Range("B7", "B5000")
If c = vVAr1 Then
vVAr2 = c.Offset(0, 1).Value
ComboBox2.AddItem vVAr2

'on trie la combobox2
ComboBox2.List = ListTrie(ComboBox2.List)
End If
Next
Else: MsgBox "Veuillez choisir un constructeur."
End If




Merci à vous, cordialement , moi

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
3 mai 2010 à 09:55
Salut
La meilleure façon de ne pas avoir de doublon, c'est de ne pas ajouter d'item s'il existe déjà - Lapalisse (1470-1525)

Je ne vois pas de code qui s'occupe de supprimer les doublons ici ...

As-tu tapé "doublon combobox" parmi les codes du site ?
Il y a pourtant des exemples.
Il faut apprendre à chercher avant d'apprendre à programmer.

Donc, avant de faire un AddItem, il te suffit de parcourir tous les items existants de ta ComboBox à la recherche d'un Item qui serait le même que celui que tu t'apprêtes à insérer.
Une simple fonction suffit :
Private Function IsItemExists(ByRef monItem As String) As Boolean
    Dim r As Long
    For r = 0 To (ComboBox2.ListCount - 1)
        If StrComp(ComboBox2.List(r), monItem, vbTextCompare) = 0 Then
            IsItemExists = True
            Exit For
        End If
    Next r
End Function
Ici, on utilise StrComp au lieu d'un test standard = afin de s'affranchir des min/maj.

et, au lieu de faire directement ton AddItem :
If Not IsItemExists(vVAr2) Then ComboBox2.AddItem vVAr2

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Zer0Termi Messages postés 32 Date d'inscription mercredi 14 avril 2010 Statut Membre Dernière intervention 20 mai 2010
3 mai 2010 à 10:08
Hey,
j'aurais du préçiser comme sur mes anciens posts que j'avais bien chercher mais que le résultat ne suivait pas.... bref. Merci de ta réponse clair et rapide.

Bonne journée :D
0
Rejoignez-nous