EXCEL grosse formule en panne

Fermé
Jess - 20 mars 2009 à 16:09
 Jess - 23 mars 2009 à 12:21
Bonjour,

Voici un moment que je planche sur une formule faisant réference à un onglet de planning et me calculant:
un avancement cumulé d'une tache chaque fin de semaine, en fonction du nombre de jours ouvrés, et ce en nombre de jours homme( ex : une tâche à accomplir entre le 14/02 et le 06/03 donc en 15 jours ouvrés, mais 27 jours de travail "homme" => fin de chaque semaine, combien de jours de travail effectués depuis le début de la tâche=> fin 1ère sem:9jours;2ème : 18jr;3ème :27jr)

Je suis en cellule M5
colonne G : date de début d'une tâche
colonne H : date de fin
En colonne K : nb de jours ouvrés entre ces deux dates
en colonne j : charge de travail en jours homme
Je suis allée à la ligne après chaque fonction si pour que ce soit plus claire :

=SI(Planning!$H7="";"";
SI(Planning!M$5<NOSEM(Planning!$G7);0;
SI(Planning!$G7=Planning!$H7;Planning!$J7;
SI(ET(Planning!M$5=NOSEM(Planning!$G7);Planning!M$5=NOSEM(Planning!$H7));Planning!$J7;
SI(ET(Planning!M$5=NOSEM(Planning!$G7);Planning!M$5<>NOSEM(Planning!$H7));((Planning!$J7/Planning!$K7)*((NB.JOURS.OUVRES(Planning!$G7;Planning!N$3))-1));
SI(ET(Planning!M$5>NOSEM(Planning!$G7);Planning!M$5<NOSEM(Planning!$H7));((Planning!$J7/Planning!$K7)*((NB.JOURS.OUVRES(Planning!$G7;Planning!N$3))-1));
SI(ET(Planning!M$5=NOSEM(Planning!$H7);Planning!M$5<>NOSEM(Planning!$G7));(Planning!$J7/Planning!$K7)*(NB.JOURS.OUVRES(Planning!$G7;Planning!$H7));
SI(Planning!M$5>NOSEM(Planning!$H7);Planning!$J7;"Oups"))))))))

Or Excel me dit que cette formule contient une erreur, et me surligne le premier "NOSEM" de l'avant dernière fonction SI.
Je ne comprend pas ce qui cloche. Si quelqu'un a aime rechercher les erreurs et a un petit peu de temps ce serait sympa. Moi je l'ai tellement retournée dans tous les sens que je ne vois plus rien!!!!

Un grand Merci à un éventuel volontaire!
(qui m'évitera peut-être de devoir annoncé à mon boss revenant de vacances lundi que ca ne marche pas!)

6 réponses

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
20 mars 2009 à 17:27
Bonjour,

Tu dépasses les limites d'excel qui est 7 fonctions imbriquées maxi.
Maintenant tu sais le pourquoi, mais pour simplifier ta formule est un peu lourde à lire...
Ou alors utiliser une colonne intermédiaire.
eric
1
Bon je vais étudier la question... mais j'ai déjà pas mal de colonnes alors je voulais éviter d'en rajouter!
Je vais la scinder en deux pour voir.

Merci :)
0
!!!! boulette !!!
: je suis en cellule M7
ligne 3 : date de début de la semaine
ligne 5 : numero de la semaine
et donc N$3 : début de la semaine suivante!
dsl
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
20 mars 2009 à 16:20
bonjour,

met un extrait de ton classeur sur
https://www.cjoint.com/
et colle le lien proposé dans ton message...

nota: NOSEM est basé sur le numérotage US différent du numérotage ISO en Europe...
0
Bonjour,

Merci d'essayer! Je ne savais pas pour NOSEM. les premières ébauches de ma formules marchaient bien mais il me manquait des hypothèses. Le lien doit être dispo maintenant. C'était un peu lourd!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
20 mars 2009 à 16:45
J'ai ecrit: 1 extrait de ton classeur: je ne télécharge jamais au dessus de 700 Ko
On a toujours pas le lien: il faut faire un copier-coller du lien proposé dans ton message (bis)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Désolée c'est la première fois sur un forum pour moi!
0
Le lien a été créé: https://www.cjoint.com/?dwq7zj2kH6
0
arrial Messages postés 1753 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 29 décembre 2023 251
21 mars 2009 à 09:48
 



C'est normal : c'est une des aberrations de Excel, on ne peut imbriquer des SI() que 7 fois. Il faut donc ruser pour faire mieux, soit en décomposant par morceaux, soit en utilisant une autre fonction, soit en composant une nouvelle fonction plus évoluée, ce qui ne pose pas de problème avec les itérations …





 … tu peux jeter un œil sur http://www.commentcamarche.net/forum/affich 11444146 multi condition si , mais on peut faire mieux. La voie de créer une nouvelle fonction me parait bien …
0
Merci je vais la retravailler. (J'étudie l'autre conversation... mais je ne comprend pas tout!)
0
Jess > Jess
23 mars 2009 à 11:59
Voici la formule allégée... c'est vrai que j'ai eu la main un peu lourde de peur d'oublier des possibilités.
(j'ai enlevé les references à la feuille "planning" qui enlevait de la clareté).
=SI($H7="";"";
SI(ET(M$5=NOSEM($G7);M$5=NOSEM($H7));$J7;
SI(ET(M$5=NOSEM($G7);M$5<>NOSEM($H7));(($J7/$K7)*((NB.JOURS.OUVRES($G7;N$3))-1));
SI(ET(M$5>NOSEM($G7);M$5<NOSEM($H7));(($J7/$K7)*((NB.JOURS.OUVRES($G7;N$3))-1));
SI(ET(M$5=NOSEM($H7);M$5<>NOSEM($G7));$J7;
SI(M$5>NOSEM($H7);$J7;0))))))
Cette formules fonctionne pas mal, mais dans de rares cas, en avant dernière semaine de tâche, elle me calcule un nombre de jours legerement superieur au nb de jours total!
Je tente d'identifier les points commun de ces erreur sur trois de mes lignes.

Merci de m'avoir aider, le fait de voir que quelqu'un venait à mon aide m'a aidé à relacher la pression et du coup j'ai les idées plus claires! Ce qui m'a permis de reperer mes boulettes!
Merci à tous :)
0
Jess > Jess
23 mars 2009 à 12:21
J'ai trouvé!!!
A force de manipuler ma fonction j'ai perdu quelques arguments en route :
Quand je vais chercher le nombre de jours ouvrés entre deux dates, il manquait ensuite la réferences à mon calendrier pour enlever les jours fériés!!!! formule finale (enfin....)

=SI($H7="";"";
SI(ET(M$5=NOSEM($G7);M$5=NOSEM($H7));$J7;
SI(ET(M$5=NOSEM($G7);M$5<>NOSEM($H7));(($J7/$K7)*((NB.JOURS.OUVRES($G7;N$3;'calendrier 2009'!$E$47:$J$58))-1));
SI(ET(M$5>NOSEM($G7);M$5<NOSEM($H7));(($J7/$K7)*((NB.JOURS.OUVRES($G7;N$3;'calendrier 2009'!$E$47:$J$58))-1));
SI(ET(M$5=NOSEM($H7);M$5<>NOSEM($G7));$J7;
SI(M$5>NOSEM($H7);$J7;0))))))

Voilà c'est fini! j'arrête de vous ennuyer. Merci à tous :-D
0