Bonjour à tous,
Pour ma part, avec un peu de retard, week-end prolongé oblige, quelques explications à partir de ton exemple initial et sur la formule :
=LET(n;A2:A8;hf;B2:B8;ht;C2:C8;UNIQUE(FILTRE(n;BYROW(n;LAMBDA(p;PRODUIT(NB.SI.ENS(n;p;hf;F1:F2))*NB.SI.ENS(n;p;ht;G1)))>0;"")))
Je calcule pour chaque nom combien de fois on trouve le nom associé à chaque critère pour les trois critères voulus (situés en F1, F2 et G1) (ex : NB.SI.ENS(A2:A8;A1;B2:B8;F1)), puis j'en fais le produit, ce qui fait un ET entre les critères : PRODUIT(NB.SI.ENS(A2:A8;A1;B2:B8;F1:F2)*NB.SI.ENS((A2:A8;A1;C2:C8;G$)
Je filtre les noms ayant un produit >supérieur à 0, et j'en prends la valeur unique : UNIQUE(FILTRE(A2:A8;...>0))
La fonction BYROW intégrant la fonction LAMBDA paramétrée, permet de parcourir le tableau des noms en appliquant à chaque ligne la fonction LAMBDA calculant le produit souhaité.
La fonction LET permet de nommer des plages de cellules, ou des formules, afin d'améliorer la lisibilité et d'optimiser le temps de calcul.
Dans le fichier fourni par JFL, cette formule pourrait s'écrire :
=LET(n;A2:A8;hf;B2:B8;ht;C2:C8;UNIQUE(FILTRE(n;BYROW(n;LAMBDA(p;PRODUIT(NB.SI.ENS(n;p;hf;tCF[Crit_form]))*PRODUIT(NB.SI.ENS(n;p;ht;tCT[Crit_test]))))>0;"")))
et pas certain d'avoir la même compréhension que JFL sur la prise en compte du critère habil test. À toi de voir.
Cordialement