Vba excel affichage d'un sheet fitre userform

Fermé
gomido Messages postés 4 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 1 septembre 2012 - 23 août 2012 à 22:44
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 25 août 2012 à 22:08
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 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 944
Modifié par Mytå le 25/08/2012 à 22:10
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 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
24 août 2012 à 09:09
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 Date d'inscription jeudi 23 août 2012 Statut Membre Dernière intervention 1 septembre 2012
25 août 2012 à 21:51
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