Index, equiv, plusieurs critères

Fermé
Helisa - 25 juil. 2013 à 19:50
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 26 juil. 2013 à 15:55
Bonjour,

Je cherche où j'ai pu faire une erreur dans cette formule :

=SIERREUR(INDEX(plage06;EQUIV($K$639;groupe06;0);EQUIV(HY636;semaine06;0)+EQUIV(HY637;jour06;0)-1);0)

Elle devrait me donner une réponse en fonction d'un jour de semaine et d'un numéro de semaine mais la réponse est décalée, et varie selon le numéro de semaine que j'inscris.

mais un bon exemple vaut mieux qu'un long discours, le fichier peut se télécharger à cette adresse : http://www.cjoint.com/?CGzrq7mTbPe



3 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
26 juil. 2013 à 00:09
Bonjour,

Déjà on peut peut-être remettre en cause plusieurs choses même si elles ne sont pas à l'origine de ton problème.

1) NO.SEMAINE(...;2) ne retourne pas le n° de semaine ISO utilisé en europe, mais le n° de semaine américain. Des fois c'est bon, des fois non.
Si ton fichier est toujours utilisé sur 2010 mettre NO.SEMAINE(...;21).
S'il doit être compatible 2003 utiliser une formule. Par exemple :
=ENT((D-SOMME(MOD(DATE(ANNEE(D-MOD(D-2;7)+3);1;2);{1E+99;7})*{1;-1})+5)/7)

2) tu pourrais utiliser la fonction date() qui est prévue pour fabriquer une date, plutôt que concatener() et laisser excel interpréter.
D'ailleurs j'aurais plutôt fabriqué le 1er du mois en L1, et en S1: =L1+1, à recopier vers la droite en sélectionnant 7 cellules. Plutôt que d'aller écrire les n° de jour un par un dans les cellules R5, Y5, etc... On se poserait moins de questions sur tes dates.

3) ...;EQUIV($K$639;groupe06;0);...
A quoi ça sert ?
groupe06=K639:K643. Pourquoi ne pas écrire directement 1 ?
On va dire que tu as simplifié et que c'est normal.

4)EQUIV(HY636;semaine06;0)+EQUIV(HY637;jour06;0)-1
Là je crois qu'on touche le noeud du problème. C'est vraiment cette colonne que que veux ? La 71ème de L:HT, c'est à dire CD639 (=98) ?

Calcule plutôt la date du lundi de la semaine qui t'intéresse avec :
=7*HY636+DATE($B$1;1;3)- JOURSEM(DATE($B$1;1;3))-5
(+x pour les autres jours)
et recherche avec equiv() cette date en L1:HT1 pour avoir la 1ère colonne qui t'intéresse.

eric
1