Afficher résultats de 5 colonnes filtrées dans une ListBox

Bonjour a tous,

Etant vraiment novice en VBA, je sollicite votre aide pour un projet au boulot. Je me contente de grappiller du code sur internet et de l'adapter à mon projet donc ne prenez pas peur en voyant le codage

Depuis un UserForm, je souhaite filtrer un autre classeur suivant 2 critères. (jusque la pas de problème).

La ou je rencontre un problème c'est pour afficher le résultat de mes 2 filtres dans une ListBox avec 5 colonnes.

Je parviens à afficher le contenu complet de mon fichier mais mes filtres ne sont pas pris en compte...

En gros je veux afficher dans la ListBox que les cellules visible après filtrage.

(Une list view est également dans le fichier car j'ai fais des essais mais résultat non concluant...)

Ci-joint mon code ainsi que mes 2 fichiers de travail.

Private Sub R1_Click()

Windows("Histo OA.xls").Activate

Range("A1").Select

Selection.AutoFilter

Selection.AutoFilter Field:=5, Criteria1:=TextBox1.Value, Operator:=xlAnd

Selection.AutoFilter Field:=7, Criteria1:="=*R01*", Operator:=xlOr, Criteria2:="=*R1*"

ListBox1.Clear

With ListView1

.ListItems.Clear

End With

UserForm1.ListBox1.Clear

ListBox1.ColumnCount = 12

ListBox1.ColumnWidths = "60;0;0;0;45;60;460;0;0;0;0;60"

ListBox1.List = Range("A1:L10000").Value

End Sub

Fonctionnement de l'UserForm:

Lancer "Macro d'analyse"

Cliquer sur ouvrir et ouvrir "Histo OA"

Ensuite dans l'UserForm taper un numero de rame entre 201 et 210

Cliquer sur le bouton de filtre R1

=> actuellement s'affiche dans la listbox la totalité des lignes en faisant abstraction des filtres.

Si une personne compétente peux me filer un coup de main...

Merci d'avance

127macro-d-analyse.zip (185.51 Ko)
106histo-oa.zip (65.31 Ko)
FlorianP a écrit :

Bonjour a tous,

Etant vraiment novice en VBA, je sollicite votre aide pour un projet au boulot. Je me contente de grappiller du code sur internet et de l'adapter à mon projet donc ne prenez pas peur en voyant le codage

Depuis un UserForm, je souhaite filtrer un autre classeur suivant 2 critères. (jusque la pas de problème).

La ou je rencontre un problème c'est pour afficher le résultat de mes 2 filtres dans une ListBox avec 5 colonnes.

Je parviens à afficher le contenu complet de mon fichier mais mes filtres ne sont pas pris en compte...

En gros je veux afficher dans la ListBox que les cellules visible après filtrage.

(Une list view est également dans le fichier car j'ai fais des essais mais résultat non concluant...)

bonsoir,

essaie en ceci, instructions surlignées

Private Sub R1_Click()
Windows("Histo OA.xls").Activate
Range("A1:L10000").Select
Selection.AutoFilter
    Selection.AutoFilter Field:=5, Criteria1:=TextBox1.Value, Operator:=xlAnd
    Selection.AutoFilter Field:=7, Criteria1:="=*R01*", Operator:=xlOr, Criteria2:="=*R1*"
ListBox1.Clear
With ListView1
.ListItems.Clear
End With
UserForm1.ListBox1.Clear
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = "60;0;0;0;45;60;460;0;0;0;0;60"
listbox.list=Selection.SpecialCells(xlCellTypeVisible)
'ListBox1.List = Range("A1:L10000").Value
End Sub

Bonsoir, merci de ton intérêt a ma problématique.

Je viens de faire un essai avec ton code et j'obtient une erreur 381 "impossible de définir la propriété List. Index de table de propriétés non valide"

bonsoir

Private Sub R1_Click()
Windows("Histo OA.xls").Activate
Range("A1:L10000").Select
Selection.AutoFilter
    Selection.AutoFilter Field:=5, Criteria1:=TextBox1.Value, Operator:=xlAnd
    Selection.AutoFilter Field:=7, Criteria1:="=*R01*", Operator:=xlOr, Criteria2:="=*R1*"
ListBox1.Clear
With ListView1
.ListItems.Clear
End With
UserForm1.ListBox1.Clear
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = "60;0;0;0;45;60;460;0;0;0;0;60"
listbox1.list=Selection.SpecialCells(xlCellTypeVisible).value
'ListBox1.List = Range("A1:L10000").Value
End Sub

Après ajout du ".value", j'ai maintenant plus que l'affichage de la première ligne mais pas des suivantes.

Mes lignes filtrées sont pourtant bien sélectionné.

Bonsoir,

chez moi ceci fonctionne, donc l'erreur est sans doute ailleurs.

outre le .value qui manquait, il y avait également le 1 derrière listbox qui manquait. tu as bien fait cette correction ?

sinon remets ton code qui ne fonctionne pas

Voici le code actuel:

Private Sub R1_Click()
Windows("Histo OA.xls").Activate
Range("A1:L65000").Select
Selection.AutoFilter
    Selection.AutoFilter Field:=5, Criteria1:=TextBox1.Value, Operator:=xlAnd
    Selection.AutoFilter Field:=7, Criteria1:="=*R01*", Operator:=xlOr, Criteria2:="=*R1*"
ListBox1.Clear
With ListView1
.ListItems.Clear
End With
UserForm1.ListBox1.Clear
ListBox1.ColumnCount = 12
ListBox1.ColumnWidths = "60;0;0;0;45;60;460;0;0;0;0;60"
ListBox1.List = Selection.SpecialCells(xlCellTypeVisible).Value
End Sub

re bonsoir,

peux-tu joindre le fichier ?

voici mes 2 fichiers.

Encore merci pour ton aide.

157histo-oa.zip (65.31 Ko)
163macro-d-analyse.zip (182.72 Ko)

Bonjour,

j'ai regardé ce problème. Apparemment, le chargement de la listbox1 ne fonctionne pas avec tes données ou cette sélection (peut-être un problème lié à des fichiers de type .xls (ancienne version). j'ai fait un chipo pour pouvoir malgré tout charger la listbox en passant par une feuille intermédiaire. cela résout le chargement, mais cela risque de compliquer les traitements éventuels que tu comptais faire après sur cette listbox.

regarde si cela peut te convenir.

Si d'autres membres du forum, ont une explication pour ce problème (listbox ne veut pas se charger à partir d'une sélection filtrée).

Private Sub R1_Click()
Set f1 = Workbooks("Histo OA.xls").Worksheets("Feuille1")

dlt = f1.Range("A60000").End(xlUp).Row
With f1.Range("A1:L" & dlt)
    .AutoFilter
    .AutoFilter Field:=5, Criteria1:=TextBox1.Value, Operator:=xlAnd
    .AutoFilter Field:=7, Criteria1:="=*R01*", Operator:=xlOr, Criteria2:="=*R1*"
End With
UserForm1.ListView1.ListItems.Clear
UserForm1.ListBox1.Clear
UserForm1.ListBox1.ColumnCount = 12
UserForm1.ListBox1.ColumnWidths = "60;0;0;0;45;60;460;0;0;0;0;60"
Set f2 = Worksheets.Add(after:=Worksheets(Worksheets.Count))
f1.Range("A1:L" & dlt).SpecialCells(xlCellTypeVisible).Copy f2.Range("A1")
dlt = f2.Range("A" & Rows.Count).End(xlUp).Row
UserForm1.ListBox1.List = f2.Range("A1:L" & dlt).Value
Application.DisplayAlerts = False
f2.Delete
Application.DisplayAlerts = True
End Sub

Bonjour

Je n'ai pas d'explication pour la zone filtrée

FlorianP a écrit :

dans une ListBox avec 5 colonnes.

Désolé de te contredire mais ta ListBox à 12 colonnes (5 sont visibles)

Mais peut-être une solution

Super ca fonctionne impec comme je veux pour le moment.

Je vais continuer a avancer sur le projet. Je vais essayer d ajouter des criteres de date et une fonction impression de la listbox.

Encore merci, surtout pour ta réactivité.

Jme permettrais de revenir vers toi si je rencontre un soucis si tu n es pas contre.

Bonjour à toi aussi

Si ce n'est moi qui répond à tes interrogations, je pense que tu trouveras ici toute l'aide dont tu as besoin

Amicalement

Banzai64 a écrit :

Bonjour

Je n'ai pas d'explication pour la zone filtrée

FlorianP a écrit :

dans une ListBox avec 5 colonnes.

Désolé de te contredire mais ta ListBox à 12 colonnes (5 sont visibles)

Mais peut-être une solution

Je n'avais pas vu ton msg.

C'est plus que parfait ! tu a meme redigé le code pour la listview, ce que je trouve plus pratique et dont je voulais essayer de transposer le code listbox sur listview.

Impec merci bien.

Rechercher des sujets similaires à "afficher resultats colonnes filtrees listbox"