Bonjour à toute la communauté,
Je cherche à optimiser un outil de planification qui a comme fonction de ventiler des heures entre 2 dates en prenant en compte la disponibilité de la ressource concernée.
Je vous transmet ci-joint la maquette du fichier.
La formule permettant la ventilation des heures est la suivante : (Celle-ci se situe entre les colonnes DP et HG de l'onglet "Liste_projets")
Le hic c'est que le fichier se comporte très bien sur quelques dizaines de lignes... mais une fois que l'on a dépassé un certains nombre de projet (et donc autant de recopie de ligne contenant cette formule), le fichier devient lent à l'ouverture et il plante si l'on touche à la structure du fichier (ajout ou suppression de ligne dans l'onglet voir même création d'onglet impossible dans le fichier).
J'ai appris (après coup) le caractère "volatile" de certaines fonctions... et les problèmes que cela peut poser.
Est-ce qu'il y aurait possibilité d'optimiser la formule pour palier à ces problèmes de lenteur si celle-ci est recopiée sur 1500 lignes environ ?
En espérant que ma demande est assez détaillée, je reste évidemment disponible pour répondre à toute question.
Vous remerciant par avance.
Saxo.
Je cherche à optimiser un outil de planification qui a comme fonction de ventiler des heures entre 2 dates en prenant en compte la disponibilité de la ressource concernée.
Je vous transmet ci-joint la maquette du fichier.
La formule permettant la ventilation des heures est la suivante : (Celle-ci se situe entre les colonnes DP et HG de l'onglet "Liste_projets")
Code:
=SIERREUR(SI(ET(DP$1>=RECHERCHEV($O4;Calendrier!$C$3:$I$1464;5;FAUX);DP$1<=RECHERCHEV($S4;Calendrier!$C$3:$I$1464;5;FAUX));
($N4*((RECHERCHEV($S4;Calendrier!$C$3:$I$1464;5;FAUX)-RECHERCHEV($O4;Calendrier!$C$3:$I$1464;5;FAUX)+1)*(RECHERCHEV($E4;Congés!$B$3:$D$42;3;FAUX)-RECHERCHEV($E4;Congés!$B$3:$D$42;3;FAUX)*RECHERCHEH(Congés!F$1;Congés!$B$1:$CW$42;EQUIV($E4;Congés!$B$3:$B$42;0)+2;FAUX))
/SOMMEPROD((ChoixRessource=$E4)*(Congés!$CY$1:$GP$1>=RECHERCHEV($O4;Calendrier!$C$3:$I$1464;5;FAUX))*(Congés!$CY$1:$GP$1<=RECHERCHEV($S4;Calendrier!$C$3:$I$1464;5;FAUX))*(Congés!$CY$3:$GP$42))))
*((SOMMEPROD((ChoixRessource=$E4)*(Congés!$CY$3:$GP$42)*(Congés!$CY$1:$GP$1=DP$1)))
/(RECHERCHEV($E4;Congés!$B$3:$D$42;3;FAUX)-RECHERCHEV($E4;Congés!$B$3:$D$42;3;FAUX)*RECHERCHEH(Congés!F$1;Congés!$B$1:$GP$42;EQUIV($E4;Congés!$B$3:$B$42;0)+2;FAUX)))/((RECHERCHEV($S4;Calendrier!$C$3:$I$1464;5;FAUX)-RECHERCHEV($O4;Calendrier!$C$3:$I$1464;5;FAUX)+1));0);0)
Le hic c'est que le fichier se comporte très bien sur quelques dizaines de lignes... mais une fois que l'on a dépassé un certains nombre de projet (et donc autant de recopie de ligne contenant cette formule), le fichier devient lent à l'ouverture et il plante si l'on touche à la structure du fichier (ajout ou suppression de ligne dans l'onglet voir même création d'onglet impossible dans le fichier).
J'ai appris (après coup) le caractère "volatile" de certaines fonctions... et les problèmes que cela peut poser.
Est-ce qu'il y aurait possibilité d'optimiser la formule pour palier à ces problèmes de lenteur si celle-ci est recopiée sur 1500 lignes environ ?
En espérant que ma demande est assez détaillée, je reste évidemment disponible pour répondre à toute question.
Vous remerciant par avance.
Saxo.