Vba excel affichage d'un sheet fitre userform

gomido Messages postés 4 Statut Membre -  
Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai fais un filtre de donnees dans un worksheet et je fais affichagé dans un listbox via un userform ,
le worksheet est bien filtré mais quand il affiche le listbox ne filtre n'expas appliqué
bref, mon problème est de rechercher des données dans un worksheet et l'afficher dans un userform pour que l'utilisateur puisse sélectionner la donné désirées.

3 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Pour remplir une ListBox multi-colonnes avec une plage filtrée
    Private Sub UserForm_Initialize() 
        Dim Cel As Range, Cpt As Integer 
        Cpt = 0 
        For Each Cel In Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).SpecialCells(xlCellTypeVisible) 
            Me.ListBox1.AddItem 
            Me.ListBox1.List(Cpt, 0) = Cel              ' 1ere colonne 
            Me.ListBox1.List(Cpt, 1) = Cel.Offset(, 1)  ' 2eme colonne 
            Cpt = Cpt + 1 
        Next Cel 
    End Sub 
    

    Mytå

    Quelle prétention de prétendre que l'informatique est récente
    Adam et Eve avaient déjà un Apple ! [MsProject 2003(FR), Excel 2003-2007(FR)]
    1
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Pour l'exemple, j'ai utilisé l'événement Initialize de l'Userform, mais tu peux metttre le code dans un bouton ou tout autre événement :
    Private Sub UserForm_Initialize()
    Dim Wsh As Worksheet, lig As Long, drlig As Long, Crit
    
    Crit = "X" '---> A ADAPTER = ton critère
    Set Wsh = Sheets("Feuil1") '---> A ADAPTER = Nom de ta feuille
    
    With Wsh
        drlig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
        For lig = 2 To drlig
        '---> A ADAPTER : F = colonne à filtrer contenant ou pas le critère Crit,
            'C = colonne contenant les données à transférer dans la listbox
            If .Range("F" & lig).Value = Crit Then ListBox1.AddItem .Range("C" & lig).Value
        Next
    End With
    Set Wsh = Nothing
    End Sub

    0
  3. gomido Messages postés 4 Statut Membre
     
    Bonsoir,
    j ai vu ta reponse
    la ligne:drlig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    ne fonctionne pas ,j ai un message incompatibilité de type
    donc j ai du faire ceci:
    set drlig = .Columns(1).Find("*",lookin:=xlvalues ,lookat:=xlpart ,searchOder:=xlByColumns)
    au fait la ligne listbox1.additem(sheet17.range("A"&lig).value me donne qu'une colonne ce qui est normale comment faire pour avoir toute les colonnes affiché?

    merci pour tous
    0