Bonsoir.
Je désire filtrer sur une colonne mais avec plusieurs critères
en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre
pantalon; veste; veston; jupe; etc.
Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis
Merci beaucoup
Denis
Private Sub CommandButton4_Click()
frm_type.Hide
Application.ScreenUpdating = False
Application.Goto Reference:="Tableau_entier"
Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20
Application.ScreenUpdating = 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
michdenis
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:% Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments, et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2
La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau
La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3
Le filtre élaboré s'applique sur la colonne A:A
(L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'---------------------
Private Sub CommandButton1_Click()
'Déclaration de la variable
Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux
'qui ont été sélectionnés seront retenus et seront encastrés
'dans la formule. Cette dernière ne retiendra lors de l'application
'du filtre que les lignes répondant à au moins un des items
'sélectionnées de la liste ... évidemment tu peux adapter la formule
'selon ce que tu désires ...!
B = ""
For a = 0 To Me.ListBox1.ListCount -1
If Me.ListBox1.Selected(a) = True Then
'Générer la formule...
B = B & "(A2=""" & Me.ListBox1.List(a) & """)+"
End If
Next
'Si il n'y a aucune sélection ...
If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par +
B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3")
Application.ScreenUpdating = False
With Sh
On Error Resume Next
.ShowAllData
On Error GoTo 0
'Détermination de la zone de sélection
.Range("X1") = ""
.Range("X2").Formula = "=(or" & B & ")*1>0"
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("X1:X2"), Unique:úlse
End With
End With
Application.ScreenUpdating = True
End Sub
'---------------------
Salutations!
"Denis" <denis.vigier@wanadoo.fr> a écrit dans le message de news:%23joi8CMfEHA.1424@tk2msftngp13.phx.gbl...
Bonsoir.
Je désire filtrer sur une colonne mais avec plusieurs critères
en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre
pantalon; veste; veston; jupe; etc.
Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis
Merci beaucoup
Denis
Private Sub CommandButton4_Click()
frm_type.Hide
Application.ScreenUpdating = False
Application.Goto Reference:="Tableau_entier"
Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20
Application.ScreenUpdating = True
End Sub
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:% Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments, et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub
Denis
Merci beaucoup Denis, je teste demain, et te donne la résultante. Bonne nuit. Denis
"michdenis" a écrit dans le message de news:
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:%
Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub
Merci beaucoup Denis, je teste demain, et te donne la résultante.
Bonne nuit.
Denis
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:O0RG52MfEHA.3204@TK2MSFTNGP10.phx.gbl...
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré
et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2
La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve
pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau
La Cellule X2 doit recevoir une formule tel que définit dans la procédure
...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3
Le filtre élaboré s'applique sur la colonne A:A
(L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton
application...
'---------------------
Private Sub CommandButton1_Click()
'Déclaration de la variable
Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux
'qui ont été sélectionnés seront retenus et seront encastrés
'dans la formule. Cette dernière ne retiendra lors de l'application
'du filtre que les lignes répondant à au moins un des items
'sélectionnées de la liste ... évidemment tu peux adapter la formule
'selon ce que tu désires ...!
B = ""
For a = 0 To Me.ListBox1.ListCount -1
If Me.ListBox1.Selected(a) = True Then
'Générer la formule...
B = B & "(A2=""" & Me.ListBox1.List(a) & """)+"
End If
Next
'Si il n'y a aucune sélection ...
If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par +
B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3")
Application.ScreenUpdating = False
With Sh
On Error Resume Next
.ShowAllData
On Error GoTo 0
'Détermination de la zone de sélection
.Range("X1") = ""
.Range("X2").Formula = "=(or" & B & ")*1>0"
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("X1:X2"), Unique:úlse
End With
End With
Application.ScreenUpdating = True
End Sub
'---------------------
Salutations!
"Denis" <denis.vigier@wanadoo.fr> a écrit dans le message de
news:%23joi8CMfEHA.1424@tk2msftngp13.phx.gbl...
Bonsoir.
Je désire filtrer sur une colonne mais avec plusieurs critères
en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre
pantalon; veste; veston; jupe; etc.
Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs
éléments,
et que cela filtre suivant les éléments choisis
Merci beaucoup
Denis
Private Sub CommandButton4_Click()
frm_type.Hide
Application.ScreenUpdating = False
Application.Goto Reference:="Tableau_entier"
Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20
Application.ScreenUpdating = True
End Sub
Merci beaucoup Denis, je teste demain, et te donne la résultante. Bonne nuit. Denis
"michdenis" a écrit dans le message de news:
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:%
Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub
Denis
Bonjour Denis cela fonctionne très bien, mais j'ai effectivement dû bien adapter. Encore merci. Denis.
"michdenis" a écrit dans le message de news:
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:%
Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub
Bonjour Denis cela fonctionne très bien, mais j'ai effectivement dû bien
adapter.
Encore merci.
Denis.
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:O0RG52MfEHA.3204@TK2MSFTNGP10.phx.gbl...
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré
et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2
La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve
pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau
La Cellule X2 doit recevoir une formule tel que définit dans la procédure
...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3
Le filtre élaboré s'applique sur la colonne A:A
(L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton
application...
'---------------------
Private Sub CommandButton1_Click()
'Déclaration de la variable
Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux
'qui ont été sélectionnés seront retenus et seront encastrés
'dans la formule. Cette dernière ne retiendra lors de l'application
'du filtre que les lignes répondant à au moins un des items
'sélectionnées de la liste ... évidemment tu peux adapter la formule
'selon ce que tu désires ...!
B = ""
For a = 0 To Me.ListBox1.ListCount -1
If Me.ListBox1.Selected(a) = True Then
'Générer la formule...
B = B & "(A2=""" & Me.ListBox1.List(a) & """)+"
End If
Next
'Si il n'y a aucune sélection ...
If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par +
B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3")
Application.ScreenUpdating = False
With Sh
On Error Resume Next
.ShowAllData
On Error GoTo 0
'Détermination de la zone de sélection
.Range("X1") = ""
.Range("X2").Formula = "=(or" & B & ")*1>0"
With .Range("A1:A" & .Range("A65536").End(xlUp).Row)
.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
Sh.Range("X1:X2"), Unique:úlse
End With
End With
Application.ScreenUpdating = True
End Sub
'---------------------
Salutations!
"Denis" <denis.vigier@wanadoo.fr> a écrit dans le message de
news:%23joi8CMfEHA.1424@tk2msftngp13.phx.gbl...
Bonsoir.
Je désire filtrer sur une colonne mais avec plusieurs critères
en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre
pantalon; veste; veston; jupe; etc.
Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs
éléments,
et que cela filtre suivant les éléments choisis
Merci beaucoup
Denis
Private Sub CommandButton4_Click()
frm_type.Hide
Application.ScreenUpdating = False
Application.Goto Reference:="Tableau_entier"
Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20
Application.ScreenUpdating = True
End Sub
Bonjour Denis cela fonctionne très bien, mais j'ai effectivement dû bien adapter. Encore merci. Denis.
"michdenis" a écrit dans le message de news:
Bonjour Denis,
Si j'ai bien compris ta question, il te faudra utiliser le filtre élaboré et une zone de critère ressemblant à ceci :
Zone ce critère : X1:X2 La cellule X1 doit demeurer vide ou avoir une étiquette qui ne se retrouve pas comme étiquette de colonne pour l'une des
étiquettes de ton tableau La Cellule X2 doit recevoir une formule tel que définit dans la procédure ...
Dans l'exemple qui suit : Le nom de la feuille est : Feuil3 Le filtre élaboré s'applique sur la colonne A:A (L'étiquette de colonne est obligatoire pour le filtre élaboré)
Attention aux noms des objets si tu transcris ce code dans ton application...
'--------------------- Private Sub CommandButton1_Click()
'Déclaration de la variable Dim B As String
'Boucler sur tous les items de la listbox et seulement ceux 'qui ont été sélectionnés seront retenus et seront encastrés 'dans la formule. Cette dernière ne retiendra lors de l'application 'du filtre que les lignes répondant à au moins un des items 'sélectionnées de la liste ... évidemment tu peux adapter la formule 'selon ce que tu désires ...! B = "" For a = 0 To Me.ListBox1.ListCount -1 If Me.ListBox1.Selected(a) = True Then 'Générer la formule... B = B & "(A2=""" & Me.ListBox1.List(a) & """)+" End If Next
'Si il n'y a aucune sélection ... If B = "" then Exit sub
'enlève le dernier caactère de la chaine représenté par + B = Left(B, Len(B) - 1)
Set Sh = Worksheets("Feuil3") Application.ScreenUpdating = False
With Sh On Error Resume Next .ShowAllData On Error GoTo 0 'Détermination de la zone de sélection .Range("X1") = "" .Range("X2").Formula = "=(or" & B & ")*1>0" With .Range("A1:A" & .Range("A65536").End(xlUp).Row) .AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sh.Range("X1:X2"), Unique:úlse End With End With Application.ScreenUpdating = True
End Sub '---------------------
Salutations!
"Denis" a écrit dans le message de news:%
Bonsoir. Je désire filtrer sur une colonne mais avec plusieurs critères en effet, j'ai dans un listbox1 dans lequel j'ai une des éléments du genre pantalon; veste; veston; jupe; etc. Je souhaite qu'en sélectionnant Multiselect sélectionner plusieurs éléments,
et que cela filtre suivant les éléments choisis Merci beaucoup Denis
Private Sub CommandButton4_Click() frm_type.Hide Application.ScreenUpdating = False Application.Goto Reference:="Tableau_entier" Selection.AutoFilter Field:=5, Criteria1:=frm_instruction.Label20 Application.ScreenUpdating = True End Sub