Bonjour (à l'heure canadienne, c'est le milieu de l'après-midi et pour moi, je vais au lit d'ici 1/2 h après ce message)
je demande l'explication de la formule qui est pour les #bon.
Effectivement, c'est sur le résultat de cette formule que repose tout les résultats des autres formules.
Cette formule est allongée par la condition SI pour éviter le renvoie de valeurs d'erreurs.
Si nous examinons cette formule SI en E18 par exemple, elle peut se traduire en clair (en étant très réducteur) par:
Si la formule renvoie une valeur d'erreur, n'affiche rien, sinon affiche son résultat.
=SI(Résultat=ERREUR, Condition1= N'affiche rien, Sinon, condition2= Résultat)
C'est donc la Condition2 qui nous intéresse.
=INDEX(DECALER('Semaine 1'!$F$7:$G$31;D17;);EQUIV(STXT($C$11;1;CHERCHE(CAR(32);$C$11;1)-1);DECALER('Semaine 1'!$G$7:$G$31;D17;);0);1)
C'est une fonction de Recherche exacte imbriquant une fonction INDEX et EQUIV
=INDEX(Champ_de_Données; EQUIV(Valeur_Cherchée; Champ;Type_Recherche);No de Colonne du Champ_de Données.
A l'intérieur de cette fonction imbriquée, se trouve une fonction DECALER qui a pour but de Décaler les Champs_de_Recherches désignés de la façon suivante.
E18:
=DECALER('Semaine 1'!$F$7:$G$31;D17;)
en regardant, D17 contient 0 donc, ici la formule
DECALER('Semaine 1'!$F$7:$G$31;D17;)
équivaut à
='Semaine 1'!$F$7:$G$31
E19:
=DECALER('Semaine 1'!$F$7:$G$31;D18;)
D18 contient 1 ("CMD000" est Première ligne du Tableau)
Donc le résultat est
=DECALER('Semaine 1'!$F$7:$G$31;1;)
qui décale d'une ligne le Champ_de_Données, soit
='Semaine 1'!$F$8:$G$32)
En fait, la fonction INDEX-EQUIV cherche à chaque fois l'occurence suivante de CMS en excluant par décalage le début de la plage de recherche jusqu'au précédent résultat et renvoie le #Bon correspondant.
Dans la fonction INDEX-EQUIV, se trouve également imbriquées une fonction STXT et une fonction CHERCHE
Pour extraire le client CMS ou Sintra des textes en C11 (CMS Entrepreneurs Généraux Inc) ou C68 (Sintra Division Métropole) Il faut extraire le premier mot du nom complet.
Pour extraire le 1er mot de "CMS Entrepreneurs Généraux Inc" ou "Sintra Division Métropole", il faut extraire avec STXT(Texte;No_Départ;No_Caractère) et donc connaître où se termine le premier mot.
Avec la Fonction CHERCHE, on cherche le 1er caractère espace qui a pour Code CAR(32) et matérialise la coupure entre le premier et le second mot.
=CHERCHE(CAR(32);$C$11;1)
Il n'y a plus qu'à extraire de CMS Entrepreneurs Généraux Inc de la 1ére lettre à celle de l'espace (moins 1 pour l'espace) et =CHERCHE(CAR(32);$C$11;1)-1 renvoie 3, donc
=STXT($C$11;1;CHERCHE(CAR(32);$C$11;1)-1
renvoie CMS
Un peu long, comme toujours à expliquer, mais, à ta disposition..
Cordialement