Décortiquer une période d'arrêt
Bonjour,
Je viens vers vous car je ne trouve pas de solution à mon problème :
Je dois décortiquer une période d'arrêt de fonctionnement.
Je m'explique : (voir fichier joint)
J'aimerais pouvoir, à partir du premier tableau rempli manuellement(heures d'arrets de fonctionnement sur plusieurs jours), remplir automatiquement le deuxième.
En ligne 8, on note le jour et l'heure d'arret du mecanisme, ainsi que son redemarrage. Cela donne la totalité du temps d'arret de celui-ci.
Mais il faudrait que, automatiquement, le tableau 2 se remplisse pour "décortiquer" cet arrêt avec précision (cad : autant d'heures tel jour, tant le deuxième jour, etc...)
Est-ce possible ?
Merci par avance pour votre aide,
Dany
Bonjour,
Je te propose cette macro:
Par contre je n'ai pas trouvé comment afficher 24:00:00 au lieu de 00:00:00...
Merci beaucoup pour votre réponse
pourriez-vous juste m'expliquer ce que vous avez fait, s'il vous plait ?
Bonjour,
Oui je peux te l'expliquer, je vais détailler un peu le programme que j'ai codé:
temps = tableau(i, 5)
plafond = 1 - tableau(i, 2)
decJour = 0Ici je définis 3 choses importantes pour la compréhension du code, le temps total d'arrêt: temps, un plafond (nombre d'heures maximales d'arrêt possible dans la journée, se calcule par rapport à l'heure d'arrêt: 24h - heure de départ (ici je met 1 car c'est égal à 24h), et enfin un décalage de jours qui sert pour le calcul de la date, pour le moment il est égal à 0 car la macro va déjà calculer le temps d'arrêt sur la journée où l'arrêt a commencé
Do
ReDim Preserve tabFin(1 To 2, 1 To UBound(tabFin, 2) + 1)
tabFin(1, UBound(tabFin, 2)) = tableau(i, 1) + decJour
tabFin(2, UBound(tabFin, 2)) = FormatDateTime(WorksheetFunction.Min(plafond, temps), vbLongTime)
temps = temps - WorksheetFunction.Min(plafond, tableau(i, 5))
plafond = 1
decJour = decJour + 1
Loop While temps > 0Ici je fais une boucle qui se répète tant qu'il reste du temps d'arrêt à distribuer, à chaque fois que je reviens au début de la boucle, j'ajoute une ligne au tableau pour pouvoir ajouter un jour contenant une période d'arrêt, ensuite je définis une date avec la date de départ de l'arrêt à laquelle j'ajoute la valeur du décalage de journée. Ensuite je mets un temps d'arrêt, pour définir le temps d'arrêt je calcule le minimum entre ma valeur plafond (qui ne pourra pas être dépassée grâce à la fonction Min), et le temps qu'il reste à distribuer, si l'arrêt commence à 23h, que l'arrêt dure 3h, le plafond sera de 1h pour le jour, la fonction min renverra 1h. je précise ensuite la façon dont je veux afficher la valeur avec FormatDateTime.
Comme j'ai affecté un temps d'arrêt à la journée en cours, je l'enlève de la durée totale d'arrêt pour voir ce qu'il me reste à affecter, puis je positionne le plafond à 24h comme on passe aux journées qui suivent le départ de l'arrêt, et j'ajoute 1 au décalage du jour, car on passe à la journée suivante.
En clair je réparties les heures d'arrêt total sur la journée de début d'ârret et les jours suivants via une boucle qui ajustera la date et le temps restant à affecter, avec un plafond qui limitera le nombre d'heures que l'on peut affecter à la première journée.
Si tu as besoin de plus d'explications n'hésite pas