Bonjour,
elle est complexe parce que c'est moi qui l'ait faite !
Avec ma vision d'Excel je n'ai pu sortir que cela !
Reprenons :
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
Ce qui est surligner sert à trouver en fonction "d'aujourd'hui" à quelle numéro de semaine on se trouve, car vos colonne ont pour entête le numéro de semaine, le format TEXTE permet de mettre ce numéro de semaine sur deux chiffre car vos colonnes indiquent S01,S02 etc;
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
A ce numéro de semaine on ajoute avant un S car vos colonne sont du type S23, S24 etc
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
RECHERCHEHorizontal pour trouver la colonne qui porte le nom "Sxx" une fois cette colonne trouvée, la fonction renvoie la valeur qui se trouve dans la cellule à ligne()-1 plus bas où Ligne() correspond à la ligne où se trouve la formule, le -1 est ajouté car les entêtes du tableau sont en ligne 2, donc la première formule en ligne 3 (3-1)=2, deux ligne plus bas à partir de la ligne d'entête nous permet d'arriver en fin de compte sur la première ligne de donnée : 1ière ligne = entête, 2ième ligne = données.
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
Ici on cherche le "/" afin de tomber sur la partie texte qui nous intéresse : la date, une fois le "/" trouver on extrait de la chaine -2 caractère avant et un total de 5 caractères, ce qui nous donne un genre du type xx/xx, c'est la date "camouflée" dans la chaine de la cellule.
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
ici c'est DATEVAL qui "transforme" une valeur alphanumérique en date, hors on a trouvé xx/xx et on y ajoute "/" puis le numéro de l'année d'aujourd'hui ce qui donne une date reconnue par excel du type xx/xx/xx
C'est grâce à cette date que la MFC fonctionne : Si aujourdhui()=la formule alors vert.
En somme c'est formule reprend ce que je disais :
on cherche l'entête, on récupère la valeur de la cellule de cette colonne pour la ligne considérée, de cette valeur on cherche le "/" et on récupère la partie de cette valeur qui va de deux caractères avant sur 5 caractères total, on y ajoute l'année actuel et on regarde si le tout est égal à aujourd'hui !
Alors bien sur dans les cellules il ne faut qu'un et un seul "/", et en plus il en faut au moins 1
Et il ne faut pas d'espaces entre les chiffres et "/" sinon il y a erreur.
Dans tous les cas grâce à :
=SIERREUR(DATEVAL(STXT(RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX);CHERCHE("/";RECHERCHEH("S"&TEXTE(ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1;"00");D$2:BU$26;LIGNE()-1;FAUX))-2;5)&"/"&ANNEE(AUJOURDHUI()));"")
Si une erreur est détectée, alors il n'y a pas de date donc pas de couleur verte....
La formule parait complexe, mais bon elle marche bien
@ bientôt
LouReeD