|
Cumul des heures et obtenir des jours |
Iniciado por jean-pierre, 25,oct. 2004 15:34 - 5 respuestas |
| |
| | | |
|
| |
Publicado el 25,octubre 2004 - 15:34 |
Bonjour,
Dans un fichier Tâches il y a une zone HeureDébut (format Heure HH:MM) et une zone HeureFin (format Heure HH:MM).
Je souhaiterais cumuler toutes les heures passées (heure fin - heure début) et obtenir le résultat en nombre de jours+heures (le cas échéant minutes) ou uniquement heures.
Exemple :
Heure début Heure fin Durée 08 h 00 18 h 00 10 h 09 h 00 22 h 00 13 h 12 h 00 20 h 00 8 h 07 h 15 19 h 45 12 h 30 06 h 00 21 h 00 15 h
--> total : 58 h 30 mn ou 2 jours 10 heures 30 minutes
En utilisant HeureDifférence j'arrive bien à cumuler mes durées dans un entier, mais comment transformer cet entier en jours + heures ou uniquement en haures (notamment si le cumul porte sur des centaines voire des milliers d'heures) ?
Je vous en remercie par avance.
Pampi |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2004 - 16:08 |
Il n'y a pas de fonction toute faite pour ça, il faut te faire une fonction perso qui va découper ton entier en tronçons de 24 Heures, de 60 minutes, etc .. comme au bon vieux temps
Yves
"Pampi" <jean-pierre@pgi64.fr> a écrit dans le message de news: 417cdb47@news.pcsoft.fr...
Bonjour,
Dans un fichier Tâches il y a une zone HeureDébut (format Heure HH:MM) et
une zone HeureFin (format Heure HH:MM).
Je souhaiterais cumuler toutes les heures passées (heure fin - heure
début) et obtenir le résultat en nombre de jours+heures (le cas échéant minutes) ou uniquement heures.
Exemple :
Heure début Heure fin Durée 08 h 00 18 h 00 10 h 09 h 00 22 h 00 13 h 12 h 00 20 h 00 8 h 07 h 15 19 h 45 12 h 30 06 h 00 21 h 00 15 h
--> total : 58 h 30 mn ou 2 jours 10 heures 30 minutes
En utilisant HeureDifférence j'arrive bien à cumuler mes durées dans un
entier, mais comment transformer cet entier en jours + heures ou uniquement en haures (notamment si le cumul porte sur des centaines voire des milliers d'heures) ?
Je vous en remercie par avance.
Pampi
|
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2004 - 16:25 |
faut que tu utilises une variable de type durée, et que tu travailles avec , tu peux récupérer chaque partie : -nombre de jours (de 24 heures) -nombre d'heures -nombre de minutes -.....
A ta variable durée tu cumules à chaque fois ta différence entre ton heure de fin et ton heure de début. Puis ensuite tu découpes la valeur de ta variable (il y a plein de fonction de gestion de date, heure pour y arriver) Je sais c'est embêtant, j'ai aussi du galerer un peu quand j'ai du utiliser des dates et des durée pour de la planification de tâches.
Marilyne |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2004 - 17:12 |
Merci pour vos réponses.
Je suis débutant et j'ai effectivement remarqué qu'il existait beaucoup de fonction de conversion gérant les dates, heures, durées, entiers, chaines ...
Ce que j'aurais aimé c'est une aide un peu plus poussée, c'est à dire quelques extraits de code qui puisse m'aiguiller davantage sur l'ordre et les étapes permettant de passer du cumul en heures de la différence entre 2 heures (début et fin) à un résultat en durée (jour, heures, minutes ...).
Surtout si vous avez déjà développé un module se rapprochant de ce cas, ça m'aiderait bien pour avancer rapidement ...
Merci encore.
Pampi |
| |
| |
| | | |
|
| | |
| |
Publicado el 25,octubre 2004 - 21:08 |
Débutante moi-même il y a peu de temps, je me suis beaucoup embêtée pour trouver et j'ai bénéficié de l'aide de plusieurs personnes pour réaliser cette procédure qui renvoie une durée.
Elle peut sûrement être améliorée mais elle fonctionne et elle donne, au choix, soit une durée à enregistrer au format HF dans une rubrique (type "date" format "Durée"), soit une valeur à afficher dans une zone texte :
// dDateDeb : Valeur "Date" (AAAAMMJJ) // Date début
// hHeureDeb : Valeur "Heure" (HHMM) // Heure début
// dDateFin : Valeur "Date" (AAAAMMJJ) // Date Fin
// hHeureFin : Valeur "Heure" (HHMM) // Heure Fin
// Valeur : "T" pour valeur résultat "texte", "D" pour valeur résultat "durée"
PROCEDURE gCalculDurée(dDateDeb,hHeureDeb,dDateFin,hHeureFin,Valeur="D")
dhDebut, dhFin sont des DateHeures
dDuree est une Duree
nbJour, nbHeure, nbMinute sont des entiers
sResDuree est une chaîne = ""
SI (hHeureDeb <> "000000000") ET (hHeureFin <> "000000000") ALORS
SI dDateFin < dDateDeb ALORS
Info("Erreur sur les dates saisies")
sResDuree = ""
dDuree = 0
SINON
// Vérification des heures saisies
SI (hHeureFin < hHeureDeb) ET (dDateFin = dDateDeb) ALORS
Info("Erreur sur les dates saisies")
sResDuree = ""
dDuree = 0
SINON
dhDebut..PartieDate = dDateDeb
dhDebut..PartieHeure = hHeureDeb
dhFin..PartieDate = dDateFin
dhFin..PartieHeure = hHeureFin
dDuree = dhFin - dhDebut
nbJour = dDuree..Jour
nbHeure = dDuree..Heure
nbMinute = dDuree..Minute
SI nbJour > 0 ALORS
sResDuree = nbJour+" J "+NumériqueVersChaine(nbHeure,"2.0")+...
" H "+NumériqueVersChaine(nbMinute,"02.0")
SINON
sResDuree = nbHeure+" H "+NumériqueVersChaine(nbMinute,"02.0")
FIN
FIN
FIN
FIN
SI Valeur = "T" ALORS
RENVOYER sResDuree
SINON
SI Valeur = "D" ALORS
RENVOYER dDuree
SINON
RENVOYER ""
FIN
FIN
Si quelqu'un a une idée pour faire plus simple ou plus fiable, ne vous gênez pas pour commenter... |
| |
| |
| | | |
|
| | |
| |
Publicado el 26,octubre 2004 - 16:55 |
En cherchant un peu plus, je suis arrivé à ce que je voulais, à savoir cumuler des heures (heure de fin - heure de début) pour obtenir un total d'heures :
Attention : dans le code ci-dessous il n'y a que les lignes concernant les heures et les durées sans la notion de lecture de fichier, boucle etc ...
diffduree est une Durée totaldureeactivite est une Durée hdeb est une Heure hfin est une Heure totalheures est une chaîne
// Au niveau de chaque enregistrement lu // Calcul plage horaire diffduree = hfin - hdeb
// Cumul de ces heures totaldureeactivite = totaldureeactivite + diffduree
// Transformation de la durée totale en nombre d'heures et minutes totalheures = ((totaldureeactivite..Jour*24)+totaldureeactivite..Heure) + " heures et " + totaldureeactivite..Minute + " minutes"
Remarque : on aurait également pu utiliser totaldureeactivite..Jour pour gérer les jours. |
| |
| |
| | | |
|
| | | | |
| | |
|