Microsoft 365 Fonction filtre avec si

Pulpito

XLDnaute Nouveau
Bonjour,
J'ai un tableau où je souhaite faire des filtres selon plusieurs colonnes selon 1 ou plusieurs critères (dans l'exemple joint 5 colonnes critères mais dans mon tableau d'origine, j'ai 14 colonnes critères) .
Je souhaiterais 3 critères de filtre.
Dans le tableau d'origine, j'ai testé plusieurs formules mais aucune ne fonctionne correctement.
L'idée étant de récupérer des informations de deux colonnes de mon tableau en fonction des critères sachant que je ne peux pas avoir les critères dans la même colonne.
Je souhaiterais également filtrer si 1 critère, 2 critères ou 3 critères indépendemment de leur ubication (critère 1, 2 ou 3) et encore je pourrais passer sur cela en partant du principe, que si 1 seul critère on l'indique dans la zone 1, et le deuxième dans la zone 2, etc.
La formule dans le tableau joint ne fonctionne pas correctement et après avoir fait de nombreux tests dans mon tableau d'origine, je suis dans une impasse!
Peut-être faudrait-il passer par une macro?
Merci d'avance de votre aide.
 

Pièces jointes

  • Test Filtre et si.xlsx
    12.1 KB · Affichages: 16

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, @Pulpito, @Efgé, @djidji59430 ,@job75

Puisque Office 365, avec la fonction FILTRE
(formule à peaufiner ou plûtôt à compléter)
365_FILTRE.PNG
 

Staple1600

XLDnaute Barbatruc
Re,

@job75
Je n'ai ouvert que la pièce jointe du demandeur.

Il y a les répondeurs (dont tu es et dont je suis) qui publient leur réponse (formule ou code VBA) dans le corps du message et dans la PJ.
Et d'autres qui postent uniquement une PJ.

Je préfère lire les réponses dans les messages en premier lieu.

Tant pis alors, si je suis redondant.

@Efgé
J'aurai du préciser que je n'avais ouvert que la PJ du message#1
En guise de pénitence, je vais aller voir les autres PJ.
 

Staple1600

XLDnaute Barbatruc
Re, Bonsoir @Cousinhub

@Efgé
j'ai ouvert ta version 2
Et j''ai testé ceci pour l'avoir plus courte ;)
En L15
=PRENDRE(L4#;;-1)
Ai-je eu tort ? (Fonctionnel dans tous les cas ?)

PS: J'ai pas encore tout compris dans ta formule
=LET( Data;Tableau13; PlgCriteres;J4:J6; NbCriteres;NBVAL(PlgCriteres); Valid;MAP(Data;LAMBDA(X;NB.SI(PlgCriteres;X))); Bool;BYROW(Valid;LAMBDA(Y;SOMME(Y)=NbCriteres)); SI(NbCriteres=0;"";FILTRE(Data;Bool;"")) )
 

Efgé

XLDnaute Barbatruc
Bbonjour à toutes et tous
En L15
=PRENDRE(L4#;;-1)
Ai-je eu tort ? (Fonctionnel dans tous les cas ?)

PS: J'ai pas encore tout compris dans ta formule

@Staple1600
On peux utiliser PRENDRE(L4#;;-1) mais cela oblige a avoir la formule en L4 qui renvoi tout le tableau.
En L15 la formule est "autoportée" pour le résultat final.
Pour voir les étapes de la formule en L15 tu prends ceci;
VB:
=LET(
   Data;Tableau13;
   PlgCriteres;J4:J6;
   NbCriteres;NBVAL(PlgCriteres);
   Valid;MAP(Data;LAMBDA(X;NB.SI(PlgCriteres;X)));
   Bool;BYROW(Valid;LAMBDA(Y;SOMME(Y)=NbCriteres));
   Resultat;SI(NbCriteres=0;"";FILTRE(CHOISIRCOLS(Data;7);Bool;""));
Resultat
)
Tu peux remplacer le dernier Résultat par n'importe quelle étape précédente. Exemple
Code:
=LET(
   Data;Tableau13;
   PlgCriteres;J4:J6;
   NbCriteres;NBVAL(PlgCriteres);
   Valid;MAP(Data;LAMBDA(X;NB.SI(PlgCriteres;X)));
   Bool;BYROW(Valid;LAMBDA(Y;SOMME(Y)=NbCriteres));
   Resultat;SI(NbCriteres=0;"";FILTRE(CHOISIRCOLS(Data;7);Bool;""));
Valid
)
Tu pourras voir sur feuille ce que cela donne.
Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

@Efgé
Ce qui heurte mes méninges, ce sont tous ces paramètres
Data, Plg ,Critères etc.
Et quand j'ai voulu faire Formule/Evaluer la formule, j'ai fait un malaise vagal ;)

Le principal étant que Pulpito ait trouvé de quoi résoudre sa question, j'en resterai là.
 

Efgé

XLDnaute Barbatruc
Re
@Staple1600
Il faut voir LET comme la possibilité de nommer des formules et de réutiliser les noms dans les formules suivantes. =LET(Nom1;Formule1;Nom2;Formule2;Formule finale qui utilise Nom1 et Nom2)
Essai ma proposition qui fini par Valid.
A+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

@Efgé
Quand j'ai fait mon malaise, ton fichier était ouvert dans Excel
Je n'ai donc fait que cela (entre deux cafés) d'essayer ta proposition
Avec cette phrase
LET(Nom1;Formule1;Nom2;Formule2;Formule finale qui utilise Nom1 et Nom2)
Je comprends déjà mieux
Mais quand tu as rédigé ta formule, tu ne l'as pas d'une seule traite dans la barre de formule, finger in the nose, non ?

[aparté]
C'est dommage que
1) On ne puisse pas utiliser Enregistrer une macro quand on fait Evaluer la formule
2) Copier/Coller le résultat d'Evaluation dans le bloc-notex
Evaluer.PNG

[/aparté]
 

Efgé

XLDnaute Barbatruc
Re
Mais quand tu as rédigé ta formule, tu ne l'as pas d'une seule traite dans la barre de formule, finger in the nose, non ?
😄 Non
J'ai fait étape par étape
D'abord le MAP qui renvoi un tableau avec des 1 ou 0 pour chaque NB.SI validé,
puis la vérification Bool qui renvoi vrai ou faux pour chaque ligne du tableau MAP si le nombe de 1 correspond au nombre de critères,
et pour finir le filtre qui ne garde du tableau Data que les lignes à VRAI dans BOOL.
Là tu as tout le tableu filtré. j'ajoute CHOISIRCOLS pour ne garder que le champs nécessaire.

Voili,voilou ;)
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re
Salut @mapomme
Mot inconnu en français
Et pourtant si :
  • 1. Déterminer la place de quelque chose, l'endroit où se situe quelque chose, quelqu'un, d'où provient quelque chose : Localiser le siège de la parole dans le cerveau. Localiser un bruit.
    Synonyme :
    situer
  • 2. Limiter l'extension d'une action, d'un phénomène, etc., les circonscrire : Localiser une épidémie.
    Synonymes :
    circonscrire - limiter
source

Sur ce, j'ai moi-même tiqué 😁
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
314 745
Messages
2 112 416
Membres
111 536
dernier inscrit
LUDO65