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

Messages postés
46
Date d'inscription
dimanche 27 février 2005
Dernière intervention
28 novembre 2007
- - Dernière réponse : titibobo2
Messages postés
46
Date d'inscription
dimanche 27 février 2005
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 !!
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
46
Date d'inscription
dimanche 27 février 2005
Dernière intervention
28 novembre 2007
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de titibobo2
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
16
0
Merci
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
Commenter la réponse de cs_MPi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.