Remplir ComboBox sans vide ni doublon

alexos

XLDnaute Nouveau
Bonjour à tous !

Dans un userform, j'ai créé une ComboBox1 qui va chercher les données de la feuille "données", colonne A. Ces données sont amenées à évoluer, c'est pourquoi j'ai effectué un remplissage qui peut aller jusqu'à la ligne A15000 (les données ne vont que jusqu'à la ligne 8000 et quelques, d'où la présence de nombreux vides)

Problème : grâce à des recherches sur différents forums, j'arrive à remplir ma ComboBox sans doublon ou sans vide, mais pas à combiner les deux :confused:

J'ai essayé de combiner à peu près toutes les méthodes trouvées sur le net, mais sans succès..

Voici mon code actuel, qui ne supprime que les cellules vides :

Code:
Private Sub UserForm_Initialize()
Dim lf As Long 
Sheets("données").Select
lf = Range("A15000").End(xlUp).Row 
ComboBox1.Clear 
For Each cel In Range("A2:A" & lf) 
If cel.Value <> "" Then ComboBox1.AddItem cel.Value
Next cel 'prochaine cellule

Je vous mets une photo en PJ pour plus de clarté avec les couleurs.

Si quelqu'un a une idée des lignes à ajouter pour pouvoir supprimer aussi les doublons je suis preneur..

Merci !

Alex
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    14.6 KB · Affichages: 123
  • Capture.PNG
    Capture.PNG
    14.6 KB · Affichages: 111

gonz19

XLDnaute Occasionnel
Re : Remplir ComboBox sans vide ni doublon

bonjour,

voici le code que j'utilise pour remplir mais combobox sen vide ni doublon.

Code:
dim cell, plage as range

set plage = range (cells(lig,6),cells(lig,dercol))
combobox4.additem
for each cell in plage 
if motspi = "" then goto suite 
combobox4= motsPi 
if combobox4.listindex = -1 then
combobox4.additem motsPi
end if 
suite:
motsPi = empty
next cell
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Dernière édition:

alexos

XLDnaute Nouveau
Re : Remplir ComboBox sans vide ni doublon

Merci, j'ai réussi avec le Dictionary, je ne sais pas pourquoi mais j'avais déjà essayé sans succès...

Merci à vous deux !

Gonz19 je n'ai pas réussi avec ta méthode.. Que représente MotsPi ? Merci
 

Dranreb

XLDnaute Barbatruc
Re : Remplir ComboBox sans vide ni doublon

Bonjour.
Si vous aviez ajouté "et classé" je vous aurais proposé mon module MSujetCBx qui n'utilise pas de Dictionary, et qui produit en parallèle une table des listes des numéros de lignes où ont été trouvées chaque poste. Les tables des clés et des listes de numéros de lignes sont d'ailleurs regroupées dans un seul Array(0 To 1) contenu dans un Variant renvoyé par une fonction SujetCBx(LaPlageColonne)
Si on n'a pas besoin, même en y ayant réfléchi, des listes de numéros de lignes pour s'éviter des recherches ultérieures selon les choix, on peut donc faire ComboBoxX.List = SujetCBx(LaPlageColonne)(0).
Puissant comme instruction, non ?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Remplir ComboBox sans vide ni doublon

Merci mais les données à afficher dans le combobox (ce sont des codes clients) sont déjà classées
Alors c'est très simple puisque toutes les lignes d'un même client sont ensembles. Il ne reste qu'à les empiler dans un tableau en mémoire à destination de la ComboBoxX.List chaque fois que le code client change !
Ne serait ce pas plus long à écrire que d'utiliser ma fonction même si c'est déjà classé ?
D'ailleurs ce ne l'est pas si vous dites qu'il y a des vides: soit ils sont intercalés et ce n'est pas classé, soit ils sont à la fin ou au début et il y a moyen de considérer qu'ils n'en font pas partie.
 

Pièces jointes

  • SujetCBxAlexos.xlsm
    45.7 KB · Affichages: 215
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 112
Messages
2 085 417
Membres
102 885
dernier inscrit
AISSOU