
Ceux qui ont lu la fiche Astuce n°87 sauront sans doute répondre à cette question de Michel M :
Bonjour, une rubrique doit me calculer le temps passé à une tâche à partir de deux champs : heure de fin – heure début.
Le problème est que certaine de mes tâches commencent à 23h et se termine à 03h le lendemain.
Pour le moment, mon heure de fin, dans ce cas de figure, doit être entrée sous la forme 27 ( 24 (minuit) + 3 (heure du matin) ) afin de me donner un résultat cohérent .
Avez-vous une formule qui me permette de mettre 3 en toute logique dans ma rubrique heure de fin.
Merci pour la solution
Faut-il y associer une date ?
On n’est pas obligé d’y associer une date.
Mais, comme le suggère Michel M, il faut tenir compte du changement de jour lorsque l’heure de fin se trouve après minuit.
On a donc deux situations.
L’heure de fin se trouve dans la même journée que l’heure de début. Elle est donc supérieure à l’heure de début.
L’heure de fin se trouve dans la journée suivante. Elle est alors inférieure à l’heure de début.
Il faut donc tenir compte de ces deux situations pour le calcul d’une rubrique Durée à partir des rubriques HeureDebut et HeureFin.
On le fait grâce à une condition, que l’on pose avec la fonction Si ( Test ; Résultat1 ; Résultat2 ) :
Si (HeureFin < HeureDebut ;
Lorsque cette condition est remplie, il faut ajouter 24 h à l’heure de fin. Mais attention, FileMaker calcule en secondes. Il faut donc poser ces 24 h en secondes et non en heures. Ce qui fait 86 400. Le calcul de la durée est donc :
(HeureFin + 86400) – HeureDebut
On place ici des parenthèses pour faciliter la lecture humaine. FileMaker n’en a pas besoin.
Si la condition HeureFin < HeureDebut n’est pas remplie, alors le calcul se fait le plus simplement du monde :
HeureFin – HeureDebut
Notre calcul complet est alors :
Durée =
Si (
HeureFin < HeureDebut ;
(HeureFin + 86400) – HeureDebut ;
HeureFin – HeureDebut
)
Michel Lansard
Merci de laisser un commentaire (déjà 3 commentaires )
Désolé, les commentaires des articles réservés sont eux-mêmes réservés
jcm38
10 ans ago
Bonjour
« L’heure de fin se trouve dans la journée suivante. Elle est alors inférieure à l’heure de début. »
Ne peut-elle pas être supérieure dans le cas d’une durée de 13 h à cheval sur minuit ?
ex : HD=22h pour finir le lendemain à HF=23h
Dans ce cas HF > HD, et ne doit pas retourner 1h mais 13h.
Bon d’accord, ça fait une longue journée, mais c’est possible.
JCM
Michel Lansard
10 ans ago
@JCM
Oui c’est vrai les situations peuvent être plus diversifiées, et il faut à chaque fois tenir compte du contexte. Cela sera différent pour certains processus actifs sur plusieurs jours, indépendamment des heures de travail des humains 😉
Là nous sommes restés dans la situation de la question. Et l’intérêt était surtout de dire qu’il faut faire les ajouts (ou retraits) en secondes et non en heures… 😉
Michel Lansard
jcm38
10 ans ago
@Michel
Très juste concernant les process de plusieurs jours ! (ça doit être pour les machines ou les triathlètes)
Merci pour cette réponse qui montre aussi qu’il est important de bien définir le ou les contextes possibles avant calculs.
JCM