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.

A voir également:

3 réponses

Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   954
 
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
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 768
 
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
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