Microsoft 365 Comment calculer une date final selon un calendrier.

HugoM

XLDnaute Nouveau
Bonjour à tous, je viens vers vous car je suis bloqué. Je suis actuellement en train de faire un diagramme de Gantt et je voudrais que celui ci ce rapproche le plus d´un fichier de Microsoft PROJECT.
Je travail dans un atelier d´usinage, les valeurs d´entrées sont les plans et les OF. Le problème est que j´ai 10 machines allant de 101 a 111, je rentre la date de début, je voudrais que Excel me calcule la date de fin en fonction des heures nécessaires pour faire ce plan (facile me direz vous oui mais ...) tout cela en fonction d´un calendrier (calendrier machine = nombre d´heures disponibles pour chaque machine commençant a 6:00 et terminant a 18:00 par exemple.) ET en fonction de la pièce précédente.
EXEMPLE:
Nº pièce 1, machine 101 : 01/01/2022 6:00 -> (2H) -> 01/01/2022 8:00
Nº pièce 2, machine 101 : 01/01/2022 8:00 -> (20H) -> 02/01/2022 16:00 ( de 8:00 a 18:00, 10H disponible + le jour suivant les 10h qui reste de 6:00 a 16:00)

L´excel sera en Espagnol car je réside la bas.
Merci pour votre lecture.

Cordialement,
 

Pièces jointes

  • GANTT PRODUCCION.xlsx
    193.7 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Attention la formule ci dessus donne des erreurs si la durée > 22H.
Dans ce cas utilisez :
VB:
=SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24)
Le "-0.00001" évite une aberration si la fin est pile poil à 18H.
Par ex : 02/01/2022 06:00:00 au lieu de 01/01/2022 18:00:00
Avec le -0.00001 on a bien 18:00.
 

Pièces jointes

  • GANTT PRODUCCION (3).xlsx
    187.6 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Là, ça devient une usine à gaz avec une formule longue comme le bras.
VB:
=SI(JOURSEM(SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24))=7;
2+SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24);
SI(JOURSEM(SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24))=1;
1+SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24);
SI(OU(HEURE(D7+E7/24-0.00001)>=18;HEURE(D7+E7/24)<=6);D7+E7/24+12/24;D7+E7/24)))
JOURSEM donne le N° du jour, vaut 7 le samedi et 1 le lundi. Il "suffit" de rajouter 2 le samedi et 1 le dimanche.

NB: Si la prochaine requête est de "sauter" aussi les jours fériés, là je pense que seul le VBA trouvera une solution, car trop complexe en formule. D'autant que les jours fériés dépendent du pays où on se trouve.
 

Pièces jointes

  • GANTT PRODUCCION (V2).xlsx
    187.8 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
303 601
Messages
2 012 547
Membres
219 333
dernier inscrit
ludo719