Comparer avec fonction OU matricielle

Bonjour à toutes et tous,

Toujours en galère avec mes matrices, grâce au bon sens de tulipe_4, je récupère 3 matrices via la fonction INDIRECT.

Les 3 matrices (de même longueur) sont englobées chacune dans une fonction, puis validée matriciellement par Ctrl + Maj + Entrer :

  • ESTNUM pour la première
    =ESTNUM(INDIRECT(AB$17&"!$g4:$g10"))
  • ESTVIDE pour la seconde
    =ESTVIDE(INDIRECT(AB$17&"!$I4:$I10"))
  • Contient la lettre x pour la troisième
    =INDIRECT(AB$17&"!$K4:$K10")="x"

Chaque validation matricielle me renvoie bien chaque plage, avec chaque fonction correctement utilisée.

Je voudrai maintenant tester le contenu ligne par ligne, je m’attendais donc à ce que la fonction OU validée matriciellement fasse son travail :

=OU(ESTNUM(INDIRECT(AB$17&"!$g4:$g10"));ESTVIDE(INDIRECT(AB$17&"!$I4:$I10"));INDIRECT(AB$17&"!$K4:$K10")="x")

J’obtiens bien les résultats dans l’assistant qui me montre par exemple que la première ligne ne renvoie que des valeurs FAUX :

belug ou indirect matrix

En revanche, la fonction ne me renvoie qu’une colonne de valeur VRAI, que ce soit avec OU, en additionnant les formules ci-dessus, en sommant les formules ci-dessus... je suis un peu à court d’idée, si vous en avez une sur ce que je ne fais pas comme il faut ?

Ci-joint le classeur avec les différents essais.

Merci d’avance

Bonsoir,

Je contribue sur la formule d'addition...

Remarque préalable : évite ET ou OU dans des formules matricielles, cela ne fonctionne pas...

La recherche de condition avec des valeurs booléennes : ET s'obtient par la multiplication, OU par l'addition.

=SI(ESTNUM(INDIRECT(AB$17&"!$g4:$g10"))+ESTVIDE(INDIRECT(AB$17&"!$I4:$I10"))+(INDIRECT(AB$17&"!$K4:$K10")="x");VRAI;FAUX)

A noter :

1) ESTNUM et ESTVIDE renvoient des valeurs booléennes ; pour que 'expression="x"' renvoie des valeurs booléennes dans la formule il faut la mettre entre parenthèses.

2) L'addition de valeurs booléennes opère automatiquement une conversion numérique. Pour retrouver des valeurs booléennes au résultats, il faut mettre sous condition : si 0=>FAUX, si autre valeur=>VRAI.

Cordialement.

Merci beaucoup, tout fonctionne impeccable en utilisant * à la place de ET, et + à la place de OU.

Les résultats renvoyés sont OK, le poids du fichier a diminué comme escompté, en revanche, grosse détérioration du temps de réponse, qui passe de quasi-instantané à environ 4 secondes ; j'hésite à garder cette optimisation qui ne me fait faire que 30ko de gain, et 0 en temps.

En tout cas, merci pour les astuces et conseils concernant les formules matricielle sous Excel

Rechercher des sujets similaires à "comparer fonction matricielle"