OVH Cloud OVH Cloud

Une liste filtrée dans un listbox

7 réponses
Avatar
Alain
Bonjour,
j'ai une feuille Excel que je dois souvent filtrer, je
désire que le résultat de ce filtrage aille dans mon
listbox, mais voilà bien que ma feuille soit filtrée,
toute la feuille non filtrée apparaît dans mon listbox.
Comment faire afin de ne voir apparaître dans mon listbox
que la partie filtée de la feuille.
Merci beaucoup.
Alain

Private Sub CommandButton4_Click()
Label9.Visible = True
Label9 = ComboBox3.Value
Sheets("Tableau").Select
Range("A1:M500").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=Label9
ListBox1.Visible = True
End Sub

7 réponses

Avatar
Starwing
Bonjour Alain,

En supposant que ta listbox est sur un UserForm...
et que ton filtre est basé sur deux colonnes...

Private Sub UserForm_Initialize()
Dim myArray() As Variant
'Un exemple basé sur deux colonnes
myArray = Worksheets(1).Range("A2:b" & _
Cells(65536, 1).End(xlUp).Row).Value

With Me.ListBox1
.ColumnCount = 2 ' Peut varier selon le nbr de colonne
.List() = myArray
End With
End Sub

Starwing
Avatar
Alain
Merci beaucoup Starwing,
je teste et te contacte aussitôt
Alain

"Starwing" a écrit dans le message de
news:5eb501c474d8$b21a4300$
Bonjour Alain,

En supposant que ta listbox est sur un UserForm...
et que ton filtre est basé sur deux colonnes...

Private Sub UserForm_Initialize()
Dim myArray() As Variant
'Un exemple basé sur deux colonnes
myArray = Worksheets(1).Range("A2:b" & _
Cells(65536, 1).End(xlUp).Row).Value

With Me.ListBox1
.ColumnCount = 2 ' Peut varier selon le nbr de colonne
.List() = myArray
End With
End Sub

Starwing
Avatar
Alain
Désolé, malgré plusieurs test, cela ne fonctionne aps.
En fait, je filtre sur la colonne B et je désire avoir dans listbox1
La liste filtrée. donc j'ai fait ces transformations sur ta proc, mais cela
ne fonctionne pas.

Private Sub UserForm_Initialize()
Dim myArray() As Variant
myArray = Sheets("Tableau").Range("C2:C" & _
Cells(65536).End(xlUp).Row).Value
With Me.ListBox1
.ColumnCount = 1
.List() = myArray
End With
End Sub



"Starwing" a écrit dans le message de
news:5eb501c474d8$b21a4300$
Bonjour Alain,

En supposant que ta listbox est sur un UserForm...
et que ton filtre est basé sur deux colonnes...

Private Sub UserForm_Initialize()
Dim myArray() As Variant
'Un exemple basé sur deux colonnes
myArray = Worksheets(1).Range("A2:b" & _
Cells(65536, 1).End(xlUp).Row).Value

With Me.ListBox1
.ColumnCount = 2 ' Peut varier selon le nbr de colonne
.List() = myArray
End With
End Sub

Starwing
Avatar
Starwing
Bonjour Alain,

Une autre méthode peut-être?

Dans UserForm contenant:

Un ListBox nommé ListBox1
Un TextBox nommé TextBox1
Un Bouton Valider
Un bouton Quitter

Insérer ce code dans le UserForm1:

Private Sub CommandButton1_Click() ' Bouton Quitter
Unload Me
End Sub

Private Sub CommandButton2_Click() ' Bouton Valider

Dim Feuille As Worksheet
Dim Plage As Range
Dim Cell As Range
Dim Critère As String

ListBox1.Clear

Critère = TextBox1 ' Créer un TextBox pour entrer
' le critère de recherche
Set Feuille = Worksheets("Sheet1")
With Feuille
Set Plage = .Range( _
.[B1], .[B65536].End(xlUp))
End With

For Each Cell In Plage

If Cell.EntireRow.Hidden = False Then
If Cell.Value = Critère Then

With Me.ListBox1
.ColumnCount = 10
.ColumnWidths = "50;50;50;50;50;50;50;50;50;50"

.AddItem
.List(.ListCount - 1, 0) = Cell.Offset(0, -
1).Value
.List(.ListCount - 1, 1) = Cell.Offset(0, -
0).Value
.List(.ListCount - 1, 2) = Cell.Offset(0,
1).Value
.List(.ListCount - 1, 3) = Cell.Offset(0,
2).Value
.List(.ListCount - 1, 4) = Cell.Offset(0,
3).Value
.List(.ListCount - 1, 5) = Cell.Offset(0,
4).Value
.List(.ListCount - 1, 6) = Cell.Offset(0,
5).Value
.List(.ListCount - 1, 7) = Cell.Offset(0,
6).Value
.List(.ListCount - 1, 8) = Cell.Offset(0,
7).Value
.List(.ListCount - 1, 9) = Cell.Offset(0,
8).Value
End With

End If
End If
Next Cell

Set Feuille = Nothing
Set Plage = Nothing
Set Cell = Nothing

End Sub


Starwing
Avatar
AV
j'ai une feuille Excel que je dois souvent filtrer, je
désire que le résultat de ce filtrage aille dans mon
listbox,


Avec en "Feuil1", en A2:Ax, la liste source que tu désires filtrer et la ListBox
qui doit contenir la liste filtrée
En "Feuil2" (que tu peux masquer) :
* En B1 : =SOUS.TOTAL(3;Feuil1!A:A)
* dans le module de cette même feuille
Private Sub Worksheet_Calculate()
[Feuil2!A:A].Clear
With Sheets("Feuil1")
.Range("A2", .[A65536].End(3)).SpecialCells(xlCellTypeVisible).Copy
(Sheets("Feuil2").Range("A1"))
End With
Sheets("Feuil1").ListBox1.ListFillRange = "Feuil2!" & Range("A1",
[A65536].End(3)).Address
End Sub

AV

Avatar
Hervé
Salut Alain,
Une autre solution avec Find.
La recherche est faite sur la colonne A et la récup des valeurs se fait sur
les 3 colonnes de droites (B, C, D). Adapte :

Private Sub CommandButton4_Click()
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer

Label9.Visible = True
Label9 = Feuil1.ComboBox3.Value

Set Plage = Range([A1], [A65536].End(xlUp))
'vide la ListBox
ListBox1.Clear
'nombre de colonnes
ListBox1.ColumnCount = 3
'effectue la recherche
Set Cel = Plage.Find(Label9, , xlValues)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
'rempli les trois colonnes en décalées
'dans cet exemple, B, C, D
ListBox1.AddItem Cel.Offset(0, 1).Value
ListBox1.Column(1, I) = Cel.Offset(0, 2).Value
ListBox1.Column(2, I) = Cel.Offset(0, 3).Value
I = I + 1
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End If

Set Cel = Nothing
Set Plage = Nothing

End Sub

Hervé.

"Alain" a écrit dans le message de news:

Bonjour,
j'ai une feuille Excel que je dois souvent filtrer, je
désire que le résultat de ce filtrage aille dans mon
listbox, mais voilà bien que ma feuille soit filtrée,
toute la feuille non filtrée apparaît dans mon listbox.
Comment faire afin de ne voir apparaître dans mon listbox
que la partie filtée de la feuille.
Merci beaucoup.
Alain

Private Sub CommandButton4_Click()
Label9.Visible = True
Label9 = ComboBox3.Value
Sheets("Tableau").Select
Range("A1:M500").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=Label9
ListBox1.Visible = True
End Sub




Avatar
Alain
Merci beaucoup à tous,
c'est vraiment très sympa.
Je vais pouvoir tester toutes ces soluces.
Alain

"Hervé" a écrit dans le message de
news:
Salut Alain,
Une autre solution avec Find.
La recherche est faite sur la colonne A et la récup des valeurs se fait
sur

les 3 colonnes de droites (B, C, D). Adapte :

Private Sub CommandButton4_Click()
Dim Plage As Range
Dim Cel As Range
Dim Adr As String
Dim I As Integer

Label9.Visible = True
Label9 = Feuil1.ComboBox3.Value

Set Plage = Range([A1], [A65536].End(xlUp))
'vide la ListBox
ListBox1.Clear
'nombre de colonnes
ListBox1.ColumnCount = 3
'effectue la recherche
Set Cel = Plage.Find(Label9, , xlValues)
If Not Cel Is Nothing Then
Adr = Cel.Address
Do
'rempli les trois colonnes en décalées
'dans cet exemple, B, C, D
ListBox1.AddItem Cel.Offset(0, 1).Value
ListBox1.Column(1, I) = Cel.Offset(0, 2).Value
ListBox1.Column(2, I) = Cel.Offset(0, 3).Value
I = I + 1
Set Cel = Plage.FindNext(Cel)
Loop While Cel.Address <> Adr
End If

Set Cel = Nothing
Set Plage = Nothing

End Sub

Hervé.

"Alain" a écrit dans le message de news:

Bonjour,
j'ai une feuille Excel que je dois souvent filtrer, je
désire que le résultat de ce filtrage aille dans mon
listbox, mais voilà bien que ma feuille soit filtrée,
toute la feuille non filtrée apparaît dans mon listbox.
Comment faire afin de ne voir apparaître dans mon listbox
que la partie filtée de la feuille.
Merci beaucoup.
Alain

Private Sub CommandButton4_Click()
Label9.Visible = True
Label9 = ComboBox3.Value
Sheets("Tableau").Select
Range("A1:M500").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=Label9
ListBox1.Visible = True
End Sub