Bonjour,
à la demande de vba-new, une tentative d'explication.
Avec la fonction DECALER, je constitue 2 matrices :
une première pour la 1ère ligne de la date choisie et une deuxième pour la deuxième ligne.
La 1ère matrice est définie avec :
(DECALER($C$7;EQUIV($O$5;$C$8:$C$65;0);1;1;9)="M")
et la 2ème avec :
(DECALER($C$7;EQUIV($O$5;$C$8:$C$65;0)+1;1;1;9)="M")
J'additionne ensuite ces deux matrices (ce qui me permet d'avoir 1 ou 2 M par salarié) et cherche ensuite les éléments qui sont > 0 (permet ainsi de savoir quels salariés ont au moins 1 M.
Cette nouvelle matrice est ensuite multipliée par le n° de colonne avec :
COLONNE($D$5:$L$5)
Cela me donne une nouvelle matrice avec le rang de la colonne des salariés qui ont 1 ou 2 M.
Avec la fonction INDEX avec PETITE.VALEUR associée à SI pour tester en fait les valeurs différentes de 0, j'isole le trigramme des salariés qui m'intéressent.
Il faut ensuite faire une nouvelle recherche du trigramme en constituant une nouvelle matrice composée de la 1ère lettre du nom et des 2 premières lettre du prénoms
La longueur de la formule est surtout due au fait que je suis amené à utiliser plusieurs fois cette matrice :
(DECALER($C$7;EQUIV($O$5;$C$8:$C$65;0);1;1;9)="M")+(DECALER($C$7;EQUIV($O$5;$C$8:$C$65;0)+1;1;1;9)="M"))>0)*COLONNE($D$5:$L$5)
dans la formule.
On pourrait passer par une phase de formule nommée, ce qui permettrait de raccourcir notablement la formule finale.
Les formules matricielles ne sont pas toujours faciles à concevoir et encore moins à expliquer. POur ma part, je les pense davantage que je ne suis en mesure de les expliquer.
Pour Fabrice, l'utilisation de trigrammes sur une base de 200 salariés risque fortement de générer des doublons. Y-a-tu songé ?
Sinon, l'exercice fut très intéressant.
A Fabrice de nous dire si ça correspond pleinement à son souhait.
Bon WE à tous
@+