[VBA excel] Récupérer dans une liste box les choix d'un AutoFilter

Résolu
titibobo2
Messages postés
46
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
28 novembre 2007
- 10 oct. 2006 à 15:37
titibobo2
Messages postés
46
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
28 novembre 2007
- 11 oct. 2006 à 10:10
bonjour
 
Est-il possible, dans un userform, de récupérer et d'afficher dans une listbox le résultat (sans doublon) d'un filtre automatique ?
 
J'ai un bouton das le userform qui execute les filtres :

<ol><li class="li1">
Selection.AutoFilter Field:=1
</li><li class="li1">
Selection.AutoFilter Field:=8, Criteria1:="="
</li></ol>et donc j'aimerais affichier dans le listbox les choix possible du Field 1
 
 
vous avez une petite idée ?
Merci beaucoup !!

2 réponses

titibobo2
Messages postés
46
Date d'inscription
dimanche 27 février 2005
Statut
Membre
Dernière intervention
28 novembre 2007

11 oct. 2006 à 10:10
Merci.
Ça foncitonne avec le code suivant :

    Dim Cell As Range
    Dim Unique As New Collection
    Dim Valeur As Range
    Dim i As Integer
   
    'Récupère la derniere ligne non vide dans la colonne A
    i = Range("A65536").End(xlUp).Row
   
    On Error Resume Next
    'boucle sur les cellules de la colonne A
    For Each Cell In Range("A8:A" & i)
    If Not Cell.EntireRow.Hidden Then Unique.Add Cell, CStr(Cell)
        'Stocke les données dans une collection
        '(La collection n'accepte que des données uniques et permet donc
        ' de filtrer facilement les doublons).
        'Unique.Add Cell, CStr(Cell)
    Next Cell
    On Error GoTo 0
   
    'Boucle sur le contenu de la collection pour alimenter la ListBox
    For Each Valeur In Unique
        Me.ListBox1.AddItem Valeur
    Next Valeur
3
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
20
10 oct. 2006 à 23:40
Salut,


Je ne sais pas si c'est le genre de chose que tu recherches, mais bon,
je te le mets quand même. Il y a peut-être d'autres façons de procéder,
mais c'est celle que j'utiliserais en attendant d'en trouver une
meilleure...


Private Sub CommandButton1_Click()

    Dim Cellule As Range

    Dim nbLignes As Long

   

    'Nombre de lignes à lire

    nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row

   

    'Parcourir toutes les cellules laissées visibles par le filtre (ici colonne C)

    For Each Cellule In Range("C1:C" & nbLignes).SpecialCells(xlCellTypeVisible)

        If Not IsInList(Cellule) Then

            ListBox1.AddItem Cellule

        End If

    Next

   

End Sub


'Fonction qui vérifie si la valeur est déjà dans la liste

Function IsInList(Valeur) As Boolean

    Dim I As Integer

   

    For I = 0 To ListBox1.ListCount - 1

        If CStr(Valeur) = ListBox1.List(I) Then

            IsInList = True

            Exit For

        End If

    Next

End Function

MPi
0