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
 
Pour le fun,
Le classeur ci-joint a 3 colonnes renseignées .
En cliquant sur la première ligne d'une des colonnes, un combobox est affiché avec les données de la colonne, triées et sans doublons .
@samuelrollens étant sous excel 2019, j'ai conservé les sort/filters spécifiques à cette version .
Ci-dessous également le code de la feuille Base pour les curieux
VB:
Private Sub Charge_Cbx(RefCell As Range)
Dim Zone As Range
    Set Zone = Me.Range(RefCell.Offset(1), Me.Cells(Me.Rows.Count, RefCell.Column).End(xlUp))
    With Me.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
           Left:=RefCell.Left, Top:=RefCell.Top + RefCell.Height, _
           Width:=RefCell.Width + 20, Height:=18)
        .Name = "Cbx"
        .Activate
        .Object.List = Me.Evaluate("Sort(Unique(Filter(" & Zone.Address & "," & Zone.Address & "<>"""")),,1)")
        .Object.ListRows = .Object.ListCount
        .Object.DropDown
    End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next: Me.Shapes("Cbx").Delete: On Error GoTo 0
    Select Case True
        Case Target.Count > 1
        Case Intersect(Target, [A1:C1]) Is Nothing
        Case Target = ""
        Case Else:        Charge_Cbx Target
    End Select
End Sub
Private Sub Cbx_Change()
    MsgBox "cbx.value=" & Cbx.Value
    Me.Shapes("Cbx").Delete
End Sub
 

Pièces jointes

- 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
900
Réponses
5
Affichages
572
Réponses
5
Affichages
416
Réponses
8
Affichages
387
Réponses
3
Affichages
329
Retour