PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Cumul des heures et obtenir des jours
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.