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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
Merci beaucoup Starwing,
je teste et te contacte aussitôt
Alain
"Starwing" <NoMail@NoMail.Niet> a écrit dans le message de
news:5eb501c474d8$b21a4300$a601280a@phx.gbl...
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
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
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
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" <NoMail@NoMail.Niet> a écrit dans le message de
news:5eb501c474d8$b21a4300$a601280a@phx.gbl...
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
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
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"
Set Feuille = Nothing Set Plage = Nothing Set Cell = Nothing
End Sub
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"
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"
Set Feuille = Nothing Set Plage = Nothing Set Cell = Nothing
End Sub
Starwing
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
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
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
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
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
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
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" <alain@koala.com> a écrit dans le message de news:
O2MuTHNdEHA.3588@TK2MSFTNGP11.phx.gbl...
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
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
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
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
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
Merci beaucoup à tous,
c'est vraiment très sympa.
Je vais pouvoir tester toutes ces soluces.
Alain
"Hervé" <hmsilve-sanspub@wanadoo.fr> a écrit dans le message de
news:OopLmkUdEHA.1048@tk2msftngp13.phx.gbl...
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
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" <alain@koala.com> a écrit dans le message de news:
O2MuTHNdEHA.3588@TK2MSFTNGP11.phx.gbl...
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
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