OVH Cloud OVH Cloud

pas de doublon dans combobox ?

3 réponses
Avatar
laurent colledani
bonjour,
comment faire pour charger dans une liste de combobox des données qui ne
seraient pas répétées plusieurs fois (sans doublon). En effet dans ma liste
d'origine qui sert pour le "rowsource" du combobox, il y a plusieurs données
identiques

cordialement

3 réponses

Avatar
LE TROLL
Bonsoir,

Tu peux déclarer une listBox (sorted=true) + (visiblúlse ' ça va +
vite)

sub supDoublons()
dim i as long
list1.clear
for i = 0 to combo1.listcount-1
list1.additem ta_donnée
next i
bis:
for i = 0 to list1.listcount-2
if list1.list(i) = list1.list(i+1) then
removeItem i
list1.refresh
goto bis
end if
next i
combo1.clear
for i = 0 to list1.listcount -1
combo1.addItem list1.list(i)
next i
end sub

----
OU le faire avec des variable en double boucle
----

sub supDoublons()
dim x() as string
dim i as long
dim j as long
dim nb as long
'
nb = nombre_d'enregistrements
redim x(nb)
for i = 1 to nb
x = enregistrement(i)
next i
for i = 1 to nb
for j = 1 to nb
if x(i) or x(j) = "" then: goto suite
if i = j then: goto suite
if x(i) = x(j) then x(j) = ""
suite:
next j
next i
combo1.clear
for i = 1 to nb
if x(i) <> "" then: combo1.addItem x(i)
next i
end sub
-----------
Il y a peut être des erreurs, j'ai fait ça de tête, dis :o)
--------


"laurent colledani" a écrit
dans le message de news:

bonjour,
comment faire pour charger dans une liste de combobox des données qui ne
seraient pas répétées plusieurs fois (sans doublon). En effet dans ma
liste
d'origine qui sert pour le "rowsource" du combobox, il y a plusieurs
données
identiques

cordialement



Avatar
Hervé
Bonsoir Laurent,
Utilise une collection et gère l'erreur.
Comme seules les clés uniques sont acceptées une erreur est générée si la
clé ajoutée existe déjà, le fait d'ajouter comme clé ta valeur provoque une
erreur si elle existe déjà (gérée par "On Error Resume Next") et donc passe
à la suivante sans la prendre en compte. Pour l'exemple, la plage est dans
la feuille "Feuil1" de A1 à Ax, adapte :

Private Sub UserForm_Initialize()
Dim Tbl As New Collection
Dim Plage As Range
Dim I As Integer

With Worksheets("Feuil1")
Set Plage = .Range(.[A1], .[A65536].End(xlUp))
End With
On Error Resume Next
For I = 1 To Plage.Rows.Count
Tbl.Add Plage(I), CStr(Plage(I))
Next
For I = 1 To Tbl.Count
Me.ComboBox1.AddItem Tbl(I)
Next I
Set Plage = Nothing
Set Tbl = Nothing
End Sub

Hervé.

"laurent colledani" a écrit
dans le message news:
bonjour,
comment faire pour charger dans une liste de combobox des données qui ne
seraient pas répétées plusieurs fois (sans doublon). En effet dans ma
liste

d'origine qui sert pour le "rowsource" du combobox, il y a plusieurs
données

identiques

cordialement



Avatar
Clément Marcotte
Bonjour,

Il y a bien cela:

(Listbox ou combobox, même combat)

http://www.excelabo.net/xl/listes.php#listesansdoublon


"laurent colledani" a
écrit dans le message de
news:
bonjour,
comment faire pour charger dans une liste de combobox des données
qui ne

seraient pas répétées plusieurs fois (sans doublon). En effet dans
ma liste

d'origine qui sert pour le "rowsource" du combobox, il y a plusieurs
données

identiques

cordialement