Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Rechercher dans plusieurs colonnes

1 réponse
Avatar
Steph
Bonjour,

J'ai un formulaire avec 4 combobox.
L'utilisateur remplit 1, 2, 3 ou 4 combobox.
Ma requ=EAte va regarder dans un fichier =E0 4 colonnes les associations
contenant les valeurs demand=E9es.
Par exemple si combo1=3Dtoto, je dois ressortir tous les quadruplets
suivants:
toto-x-x-x
x-toto-x-x
x-x-toto-x
x-x-x-toto
Comment faire pour que ma requ=EAte balaye les 4 colonnes ?

Ca se complique si j'ai deux valeurs sur les 4. Si combo1=3Dtoto et
combo2=3Dpapa, je dois ressortir
toto-papa-x-x
toto-x-papa-x
toto-x-x-papa
x-toto-papa-x
x-toto-x-papa
x-x-toto-papa
papa-toto-x-x
...

J'avais fait un filtre mais qui ne marche que si les 4 combo sont
remplis:
Rows("2:2").Select
Selection.AutoFilter

If ComboBox1<> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=3D1, Criteria1:=3DComboBox1.Value
If ComboBox2 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=3D2, Criteria1:=3DComboBox2.Value
If ComboBox3 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=3D3, Criteria1:=3DComboBox3.Value
If ComboBox4 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=3D4, Criteria1:=3DComboBox4.Value

Y a-t-il un moyen pour faire un filtre multicolonne ?

Merci

1 réponse

Avatar
MichD
Bonjour,

Tu peux utiliser le filtre avancé comme ceci.
L'exemple utilise 4 valeurs différentes pour chacun des combobox.

Dans la formule si tu utilises "AND" tu obtiendras seulement les lignes
où chacun des critères est respecté. Si tu veux extraire toutes les
occurrences des critères dans chaque colonne, change "And" pour "OR"


'-------------------------------------
Sub test()

Dim Crit1 As String, Crit2 As String
Dim Crit3 As String, Crit4 As String
Dim DerLig As Long

Crit1 = Me.combobox1
Crit2 = Me.combobox2
Crit3 = Me.combobox3
Crit4 = Me.combobox4

With Worksheets("Feuil1") 'Nom feuille à adapter
'déterminer la zone de critère
'Tu peux prendre les 2 cellules de ton choix
Range("G1") = ""
.Range("G2").Formula = "=AND(A2=""" & Crit1 & """," & _
"B2=""" & Crit2 & """,C2=""" & Crit3 & _
""",D2=""" & Crit4 & """)"

'Dernière ligne de la plage
DerLig = .Range("A65536").End(xlUp).Row
'Exécuter le filtre avancé
.Range("A1:D" & DerLig).AdvancedFilter Action:=xlFilterInPlace, _
criteriarange:þuil1.Range("G1:G2")

End With
'-------------------------------------


MichD
------------------------------------------
"Steph" a écrit dans le message de groupe de discussion :


Bonjour,

J'ai un formulaire avec 4 combobox.
L'utilisateur remplit 1, 2, 3 ou 4 combobox.
Ma requête va regarder dans un fichier à 4 colonnes les associations
contenant les valeurs demandées.
Par exemple si combo1=toto, je dois ressortir tous les quadruplets
suivants:
toto-x-x-x
x-toto-x-x
x-x-toto-x
x-x-x-toto
Comment faire pour que ma requête balaye les 4 colonnes ?

Ca se complique si j'ai deux valeurs sur les 4. Si combo1=toto et
combo2=papa, je dois ressortir
toto-papa-x-x
toto-x-papa-x
toto-x-x-papa
x-toto-papa-x
x-toto-x-papa
x-x-toto-papa
papa-toto-x-x
...

J'avais fait un filtre mais qui ne marche que si les 4 combo sont
remplis:
Rows("2:2").Select
Selection.AutoFilter

If ComboBox1<> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=1, Criteria1:=ComboBox1.Value
If ComboBox2 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=2, Criteria1:=ComboBox2.Value
If ComboBox3 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=3, Criteria1:=ComboBox3.Value
If ComboBox4 <> "" Then ActiveSheet.Range(Cells(2, 1),
Cells(ligne, colonne)).AutoFilter Field:=4, Criteria1:=ComboBox4.Value

Y a-t-il un moyen pour faire un filtre multicolonne ?

Merci