XL 2021 liste valeurs d'un combobox (doublons + tri)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

samuelrollens

XLDnaute Nouveau
Bonjour,

grâce au code dessous, j'obtiens bien une liste déroulante avec les valeurs de la colonne "Référence utilisateur".
par contre, j'aimerais que les valeurs soient uniques (même si doublons dans la colonne) et qu'elles soient triées
d'avance merci de votre aide
SamuelR

'Initialisation du formulaire avec remplissage du combobox via colonne réf utilisateur
Private Sub UserForm_Initialize()

Dim ws_b As Worksheet
Dim Col_reference_utilisateur As Long
Dim lastRow As Long
Dim i As Long



' Définir la feuille de calcul
Set ws_b = ThisWorkbook.Sheets("Base")

' renvoi le n° de la colonne "Référence utilisateur" pour l'exploiter dans Cells
Col_reference_utilisateur = ws_b.Rows(1).Find("Référence utilisateur", LookAt:=xlWhole).Column

' Trouver la dernière ligne de la colonne col_refuti
lastRow = ws_b.Cells(ws_b.Rows.Count, Col_reference_utilisateur).End(xlUp).Row

' Vider le ComboBox
Combo_reference_utilisateur.Clear

' Remplir le ComboBox avec les valeurs de la colonne col_refuti, en excluant l'en-tête
For i = 2 To lastRow ' Commencer à 2 pour exclure l'en-tête
If ws_b.Cells(i, Col_reference_utilisateur).Value <> "" Then
Combo_reference_utilisateur.AddItem ws_b.Cells(i, Col_reference_utilisateur).Value
End If

Next i

End Sub
 
Bonjour et bienvenu sur le forum
VB:
' Remplir le ComboBox avec les valeurs de la colonne col_refuti, en excluant l'en-tête
For i = 2 To lastRow ' Commencer à 2 pour exclure l'en-tête
 If ws_b.Cells(i, Col_reference_utilisateur).Value <> "" Then
  Combo_reference_utilisateur=ws_b.Cells(i, Col_reference_utilisateur).Value
  if Combo_reference_utilisateur.listindex=-1 then
    Combo_reference_utilisateur.AddItem ws_b.Cells(i, Col_reference_utilisateur).Value
  endif
 End If
next
A+ François
 
Bonjour et bienvenu sur le forum
VB:
' Remplir le ComboBox avec les valeurs de la colonne col_refuti, en excluant l'en-tête
For i = 2 To lastRow ' Commencer à 2 pour exclure l'en-tête
 If ws_b.Cells(i, Col_reference_utilisateur).Value <> "" Then
  Combo_reference_utilisateur=ws_b.Cells(i, Col_reference_utilisateur).Value
  if Combo_reference_utilisateur.listindex=-1 then
    Combo_reference_utilisateur.AddItem ws_b.Cells(i, Col_reference_utilisateur).Value
  endif
 End If
next
A+ François
bonjour François
merci de ton aide
j'ai donc ajouté cette commande
if Combo_reference_utilisateur.listindex=-1 then
Combo_reference_utilisateur.AddItem ws_b.Cells(i, Col_reference_utilisateur).Value

mes valeurs ne sont pas trièes ni dé doublonnées
Samuel
 
Bonjour.
Info: J'ai des modules de service (c'est à dire assez costauds mais ne nécessitant aucune maintenance) pour résoudre ce genre de besoins, avec à la clé une programmation applicative courte et simple dans l'UserForm. Mais il me faut votre classeur pour que je puisse les y installer.
 
VB:
Private Sub UserForm_Initialize()

Dim Col_reference_utilisateur As Long
Dim lastRow As Long
Dim SearchRng As String

' Définir la feuille de calcul
    With ThisWorkbook.Sheets("Base")

' renvoi le n° de la colonne "Référence utilisateur" pour l'exploiter dans Cells
        Col_reference_utilisateur = .Rows(1).Find("Référence utilisateur", LookAt:=xlWhole).Column

' Trouver la dernière ligne de la colonne col_refuti
        lastRow = .Cells(.Rows.Count, Col_reference_utilisateur).End(xlUp).Row

' Remplir le ComboBox avec les valeurs de la colonne col_refuti, en excluant l'en-tête
        SearchRng = .Cells(2, Col_reference_utilisateur).Resize(lastRow - 1).Address
        Combo_reference_utilisateur.List = .Evaluate("Sort(Unique(Filter(" & SearchRng & "," & SearchRng & "<>"""")),,1)")
    End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
895
Réponses
5
Affichages
570
Réponses
5
Affichages
413
Réponses
8
Affichages
385
Réponses
3
Affichages
327
Retour