Menu déroulant d'un filtre auto dans une combobox

Pimousse17

XLDnaute Nouveau
Bonjour à tous et merci d'avance à ceux qui pourront m'éclairer :D

Est-il possible d'avoir le même affichage dans le menu déroulant d'une combobox que dans celui d'un filtre auto ?
Je m'explique j'ai une BDD client avec un champ contenant les noms et prénoms de mes clients. Lorsque je passe par le menu déroulant du filtre auto le menu déroulant me propose la liste des clients trié par ordre alphabétique, sans doublons, sans ligne vide... et tout ça sans modifier ma base et de manière instantanée.
La même chose avec une combobox dans un USF m'oblige à faire un filtre, un tri... avant de pouvoir afficher quelque de correct avec ma combobox.
D'où ma question comment réussir à obtenir instantanément se que j'ai en un clic sur le filtre auto dans une combobox ? :confused: est-se possible ?

J'espère avoir été clair

Merci d'avance encore !
 

mromain

XLDnaute Barbatruc
Re : Menu déroulant d'un filtre auto dans une combobox

Bonsoir Pimousse17,

Je pense que tu seras obligé de le coder...
Voici une fonction qui prend en paramètre la zone qu'il faut "nettoyer" et qui renvoie un tableau trié :
VB:
Public Function TriSansDoublon(zone As Range) As Variant()
Dim monDico As Object, laCell As Range, i As Long, j As Long, tmpS As String, tmpT() As Variant
    Set monDico = CreateObject("Scripting.Dictionary")
    On Error Resume Next
     For Each laCell In zone.Cells
         If laCell.Text <> "" Then monDico.Add laCell.Text, laCell.Text
     Next laCell
    On Error GoTo 0
    tmpT = monDico.Items
    For i = LBound(tmpT) To UBound(tmpT) - 1
        For j = i + 1 To UBound(tmpT)
            If tmpT(i) > tmpT(j) Then
                tmpS = tmpT(i)
                tmpT(i) = tmpT(j)
                tmpT(j) = tmpS
            End If
        Next j
    Next i
    TriSansDoublon = tmpT
End Function
Du coup, voici comment il faut initialiser la ComboBox (en supposant que les champs de ta BDD contenant les noms et prénoms sont dans la zone A2:A100 de la feuille BDD) :
VB:
Me.ComboBox1.List = TriSansDoublon(ThisWorkbook.Sheets("BDD").Range("A2:A100"))
A+
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 655
Messages
2 111 605
Membres
111 217
dernier inscrit
aladinkabeya2