Re : Compter les actions d’un agent
Bonjour,
=SOMMEPROD(NON(ESTERREUR(TROUVE("toto";A2:A20;1)))*(B2:B20="repos"))
TROUVE("toto";A2:A20;1) renvoie un N° de position de la chaine toto dans une cellule. Si elle ne trouve rien elle renvoie #VALEUR
Là elle est appliqué à une matrice A2:A20 elle renvoie par exemple :
{1;#VALEUR!;1;#VALEUR!;#VALEUR!;#VALEUR!;1;#VALEUR!;#VALEUR!;#VALEUR!;1;#VALEUR!;#VALEUR!;1;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!;#VALEUR!}
Les #VALEUR nous genent on va donc tester l'erreur avec ESTERREUR on va avoir la matrice :
{FAUX;VRAI;FAUX;VRAI;VRAI;VRAI;FAUX;VRAI;VRAI;VRAI;FAUX;VRAI;VRAI;FAUX;VRAI;VRAI;VRAI;VRAI;VRAI}
Mais on veut celle qui ne sont pas en erreur (celles où il y a "toto"), donc on inverse resultat avec NON ça donne :
{VRAI;FAUX;VRAI;FAUX;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;VRAI;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;FAUX;FAUX}
Les VRAI impliquent qu'il y a toto dans la cellule.
(B2:B20="repos") renvoie une matrice :
{VRAI;FAUX;FAUX;VRAI;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;VRAI;FAUX;FAUX;FAUX;FAUX}
Là où il y a VRAI, il y a repos.
Enfin, on multiplie ces 2 matrices, VRAI * VRAI = VRAI le reste (FxV, VxF et FxF) = FAUX. On obtient la matrice :
{1;0;0;0;0;0;1;0;0;0;1;0;0;0;0;0;0;0;0}
(elle est numérique car on à fait une opération (multiplication)
un "1" indique que dans une cellule, il y a "toto"
ET dans l'autre il y a "repos"
Il ne reste plus qu'à faire la somme.
SOMMEPROD fait une opération matricielle
Edit : Bonjour Brigitte, plus rapide