QUERY multi-filtre

Bonjour à tous,

Je me débrouille plutôt bien avec Query mais là, je bloque sur un sujet :

J'ai une base de donnée et un tableau de bord.

De mon tableau de bord, j'utilise =Query afin d'avoir par exemple une liste de ligne en fonction d'une matière, d'une référence, d'un client.

Unitairement tout fonctionne, mais j'aimerais pouvoir cumuler les conditions, c'est-à-dire choisir une matière + un client en même temps par exemple.

Lorsque je mets AND en condition dans Query ça fonctionne, mais dès que je ne remets qu'une condition ça ne fonctionne plus (car un de mes champs est vide).

Voici ma formule : =QUERY('Données'!A2:AC;"select B,D,G,H,I,J,L,M,K,P,N,AC where B = '"&C4&"' OR G = '"&C2&"' OR J = '"&F4&"'")

Et voici une capture de mon écran de conditions :

screenshot 2023 04 06 10 20 21

Bonjour Pierre,

J'avais commencé une ébauche de gestion de Cave à vins avec des critères de sélections multiples via des listes déroulantes.

Je te mets une copie en modèle pour que tu t'appropries la méthode...

https://docs.google.com/spreadsheets/d/1qzVfRMGAHTWtJ2gf9Sey4fA2EpgeOtue474QIz7tyjU/edit?usp=sharing

Cordialement,

Fil.

Bonjour,

Une version inspirée de la réponse de Filoche :

=QUERY('Données'!A2:AF;"SELECT B,D,G,H,I,J,L,M,K,P,N,AC"&IF(COUNTA(C2;C4;F4)>0;" WHERE "&TEXTJOIN(" AND ";TRUE;IF(C4<>"";" B = '"&C4&"'";"");IF(C2<>"";" G = '"&C2&"'";"");IF(F4<>"";" J = '"&F4&"'";""));""))

Bonjour,

Merci à vous deux pour vos retours, je vais me pencher dessus quand j'aurai 5 minutes (plutôt 20 en vrai).

Bon, j'ai été regarder vos 2 solutions et bon, sur ce coup-ci Pedro gagne :

=SIERREUR(SI(A2="cave";{query(VINS!A2:F;"select * where A matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(A2="Sans filtre";"";"ROUGE"))&".*' AND B matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(B2="Sans filtre";"";B2))&".*' AND D matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(D2="Sans filtre";"";D2))&".*' ORDER BY D"))));query(VINS!A2:F;"select * where A matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(A2="Sans filtre";"";"BLANC"))&".*' AND B matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(B2="Sans filtre";"";B2))&".*' AND D matches "&ArrayFormula("'"&textjoin(".*|";1;D15".*"&SI(D2="Sans filtre";"";D2))&".*' ORDER BY D"))));query(VINS!A2:F;"select * where A matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(A2="Sans filtre";"";"ROSE"))&".*' AND B matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(B2="Sans filtre";"";B2))&".*' AND D matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(D2="Sans filtre";"";D2))&".*' ORDER BY D"))))};query(VINS!A2:F;"select * where A matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(A2="Sans filtre";"";A2))&".*' AND B matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(B2="Sans filtre";"";B2))&".*' AND D matches "&ArrayFormula("'"&textjoin(".*|";1;".*"&SI(D2="Sans filtre";"";D2))&".*' ORDER BY D")))));"")

VS

=QUERY('Données'!A2:AF;"SELECT B,D,G,H,I,J,L,M,K,P,N,AC"&IF(COUNTA(C2;C4;F4)>0;" WHERE "&TEXTJOIN(" AND ";TRUE;IF(C4<>"";" B = '"&C4&"'";"");IF(C2<>"";" G = '"&C2&"'";"");IF(F4<>"";" J = '"&F4&"'";""));""))

Effectivement, c'est une belle solution clé en main apportée par Pedro...

Rechercher des sujets similaires à "query multi filtre"