Contexte
J'ai besoin de prendre un certain nombre d'activités avec des dates de début et de fin souhaitées, et vérifier si elles sont raisonnables compte tenu de la contrainte que seules 3 (par exemple) peuvent être entreprises simultanément. Puisqu'il ne peut jamais y en avoir plus de 3 en cours, dans mon emploi du temps je dois permettre des retards. Bien que je sache que cela peut être fait dans MS Project, j'ai besoin que cela soit fait spécifiquement dans Excel.
Problème
J'ai réussi à formuler cela dans Excel, et cela fonctionne absolument comme prévu pour un petit nombre de tâches sur une courte période (jusqu'à environ 30 000 cellules). Cependant, je dois l'appliquer à beaucoup plus d'activités, sur une durée beaucoup plus longue (potentiellement jusqu'à 500 000 cellules au total - ce qui prend actuellement environ 10 minutes à faire!). Pouvez-vous recommander des améliorations à ma formule? J'ai déjà fait beaucoup d'optimisation moi-même, et j'ai étudié quelques autres options (voir ci-dessous) :
Méthode actuelle
Capture d'écran de la méthode actuelle avec un profil indicatif
Veuillez noter que ma méthode repose sur le fait que les activités se voient attribuer un numéro de priorité, et sont classées en fonction de cela (ce sera simplement la durée de début la plus précoce).
Explication de la formule pour générer le profil/diagramme de Gantt:
- Si c'est la première ligne ($B9 = 1) dans le diagramme de Gantt, ne réfléchissez pas trop car il n'y a pas d'autres activités avant vous : il suffit de mettre des 1 dans chacune des cellules si vous êtes dans les dates souhaitées (SI(ET(AO$3>=$C9,AO$3<=$D9),1,"")).
- Pour les autres lignes... La formule vérifie si (A) vous êtes dans la plage de dates correcte (B) s'il y a déjà 3 activités en cours au-dessus de vous (C) si vous avez déjà mis suffisamment de 1 dans cette activité.
(J'utilise des tableaux Excel là où je veux que la formule soit cohérente dans chaque ligne, c'est pourquoi j'ai le 1er et le 2e point dans la même formule)
Tentatives d'amélioration actuelles:
- Au lieu de faire la somme de la plage entière, j'ai essayé de définir une SOMME(DEPLACER(...)) pour que moins de cellules aient besoin d'être additionnées. Cependant, après avoir essayé cela, cela signifiait simplement que la formule manquait certaines activités et conduisait donc à ce que certaines activités commencent malgré la contrainte ou durent plus longtemps que la durée prévue.
- Au lieu de le faire au niveau quotidien, j'ai essayé de le faire de manière hebdomadaire/mensuelle. Bien que cela accélère certainement le calcul, ce niveau de granularité ne donnait pas des résultats précis - donc je dois rester avec une granularité quotidienne.
TL:DR:
Y a-t-il un moyen d'optimiser davantage =SI($B10=1, SI(ET(AO$3>=$C10,AO$3<=$D10),1,""), SI(ET(AO$3>=$C10,SOMME(AO$4:AO9)<$D$13,SOMME($F10:AN10)<$E10),1,"")). Merci.