Doublons toujours pas résolu [ devient fou ] [Résolu]

Messages postés
32
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
20 mai 2010
- - Dernière réponse : 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
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
58
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 135 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
32
Date d'inscription
mercredi 14 avril 2010
Statut
Membre
Dernière intervention
20 mai 2010
0
Merci
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
Commenter la réponse de Zer0Termi