Re : Pointer dans une liste selon deux critères
Bonsoir
Il me semble que le NON dans la formule était de trop (On cherche dans la feuilles base! des gens devant travailler aujourd'hui, et pas le contraire). Je le supprime et je modifie le précédent fichier en conséquence. J'y ajoute aussi quelques $ oubliés. Résultat, on obtient les bons résultats, mais des #NOMBRE peuvent apparaitre. Je vais essayer d'arranger ça.
En attendant, histoire de t'aider un peu à comprendre la formule utilisée, quelques explications :
En A5
(NB.SI(Today!A$4:A$16;Badges)=0 renvoie VRAI si le n° de badge, pris dans la feuille base!, n'est pas présent dans la liste des n° de badges dans la feuille Today (donc la personne est absente aujourd'hui), FAUX s'il est présent. Comme on travaille en matriciel, on fait le calcul NB.SI pour tous les n° de badges. Cela renvoie donc une liste de VRAI et de FAUX.
ESTNUM(CHERCHE(STXT(TEXTE(AUJOURDHUI();"jjj");1;2);Les_jours)) renvoie VRAI si les deux premières lettres d'aujourd'hui sont sur la ligne testée en colonne base!D (donc la personne correspondant à cette ligne devait travailler ce jour là). Comme on travaille en matriciel, cela renvoie donc une liste de VRAI et de FAUX.
(NB.SI(Today!A$4:A$16;Badges)=0)*ESTNUM(CHERCHE(STXT(TEXTE(AUJOURDHUI();"jjj");1;2);Les_jours)) renvoie une liste de 0 et de 1 (FAUX*FAUX = 0, FAUX*VRAI= 0, VRAI*VRAI=1)
SI((NB.SI(Today!A$4:A$16;Badges)=0)*ESTNUM(CHERCHE(STXT(TEXTE(AUJOURDHUI();"jjj");1;2);Les_jours));LIGNE(Badges)) renvoie la liste des n° de lignes contenant des n° de badges dans la feuille base! non cités dans la feuille Today des gens devant travailler aujourd'hui.
PETITE.VALEUR(SI((NB.SI(Today!A$4:A$16;Badges)=0)*ESTNUM(CHERCHE(STXT(TEXTE(AUJOURDHUI();"jjj");1;2);Les_jours));LIGNE(Badges));LIGNES(Absents!$4:4))) renvoie la première plus petite valeur de cette liste. En A6, cela sera la seconde plus petite valeur, en A7, la troisième...
INDEX(base!A$1:A$18;PETITE.VALEUR(SI((NB.SI(Today!A$4:A$16;Badges)=0)*ESTNUM(CHERCHE(STXT(TEXTE(AUJOURDHUI();"jjj");1;2);Les_jours));LIGNE(Badges));LIGNES(Absents!$4:4))) renvoie le contenu de la colonne base!A$1:A$18 sur la ligne trouvée précédemment.
La condition après le SI permet d'avoir des "" lorsqu'il ni y a plus de n° de badge à afficher.
@ plus