Microsoft 365 Calcul heure plus de 24h

pompaero

XLDnaute Impliqué
Bonjour le forum,

je viens chercher de l'aide auprès de vous concernant une petite appli que j'ai créé il y a quelques années maintenant avec l'aide de profs du vba à l'époque.
Ce que j'aimerai améliorer sur cette appli est le calcul des heures supérieur à 24h.
Actuellement sur une journée je peu noter au maximum (hr début, hr fin) 00:01 à 23:59, ce qui me convenait jusqu'à présent.
- en exemple : le 02 mars un agent doit effectuer 08h à 02h jusqu'au lendemain, ce qui oblige à noter le 02 mars (08h à 23H59) puis le 03 mars noter (00h01 à 02h02) pour faire 18h en tout.
Aujourd'hui, j'aurais besoin de pouvoir dépasser les 23h59 et donc noter directement le 02 mars 08h à 02h.
J'ai tenté de chercher et modifier le codage mais sans résultat..
Serait-il possible d'améliorer cela ?
Merci à vous les profs.

Cordialement
pompaero
 

Pièces jointes

  • Planning-Stat 2021-2022 Pompaero.xlsm
    559.8 KB · Affichages: 38

pompaero

XLDnaute Impliqué
Bonjour Victor21

Merci de ton intérêt à mon fil.
Je me rend compte que je n'ai pas rentré dans le détail des explication, désolé.
ma requête est dans les code vba lors de l'utilisation du formulaire U_F_1 et UF_Modif qui correspond à envoyer les données sur l'onglet "Planning prévisionnel" et c'est sur les totaux des semaines que cela doit ajuster l'horaire.
Encore désolé
Si besoin de plus d'explication hésite pas.

pompaero
 

pompaero

XLDnaute Impliqué
Bonsoir le forum

Ayant passé une bonne partie du week-end à essayer d'améliorer ce petit programme mais sans vain... Là franchement, je me sent dépassé par ce codage.
Vraiment personne pour m'aider ou trouver une solution ?
Merci

pompaero
 

pompaero

XLDnaute Impliqué
Bonsoir dysorthographie, le fil

Merci de ton retour.
Cette proposition j'avais trouvé mais ce n'est pas le format comme ça que je cherche à améliorer.
C'est dans l'U_F_1 avec les textbox "TbHeureDeb et TbHeureFin" et le bouton valider. J'aimerai que HrFin moins HrDeb à cheval sur 2 jour donne le résultat correct sur le total de la semaine.
Exemple :
Mardi 02 mars, "TbHeureDeb" est noté 13:00, en TbHeureFin est noté 02:00 (le Mercredi 03), le résultat de la semaine doit indiquer au total 13:00.
Alors qu'actuellement je suis obligé de noter (Mardi 02 mars) dans TbHeureDeb 13:00, et en TbHeureFin noter 23:59 puis (Mercredi 03) noter 00:01 et 02:02 pour avoir le résultat total.
J'imagine que le calcul s'effectue dans une macro mais je ne trouve pas et ne sais comment faire cette amélioration.
Je ne sais pas si mes explications sont bien claire, si ce n'est pas le cas hésite pas à demander.
Je tiens fort à ce petit programme c'est pour moi faire les heures de mon service.
Merci
pompaero
 

pompaero

XLDnaute Impliqué
Bonsoir Marcel32, patricktoulon, le fil

Marcel32
Merci pour 👍, au moins j'aurai trouvé ça... :)

patricktoulon
Merci pour ton code, mais je le met ou dans ma macro ?
Il faut l'ajouter ou le mettre dans un module ?

Je suis un peu pommé sur ce coup !!
Merci
 

TooFatBoy

XLDnaute Barbatruc
Merci pour 👍, au moins j'aurai trouvé ça... :)
Oui. Et franchement, je trouve que c'est déjà pas mal. (re👍)


Tu peux essayer d'ajouter
VB:
- (.Cells(Ligne, Colonne + 1) < .Cells(Ligne, Colonne))
lors du calcul des TotSem et TotMois.

Ce qui te donnerait ça :
VB:
TotSem = TotSem + (.Cells(Ligne, Colonne + 1) - .Cells(Ligne, Colonne)) - (.Cells(Ligne, Colonne + 1) < .Cells(Ligne, Colonne))
et ça :
VB:
TotMois = TotMois + (.Cells(Ligne, Colonne + 1) - .Cells(Ligne, Colonne)) - (.Cells(Ligne, Colonne + 1) < .Cells(Ligne, Colonne))


ps : tu sais qu'en mettant un Application.ScreenUpdating = False en début de macro et un Application.ScreenUpdating = True en fin de macro, ça ira beaucoup, beaucoup plus vite ? ;)
Chez moi la macro, au lieu de se dérouler en 5,4 secondes en moyenne, se déroule en 0,1 seconde.
 
Dernière édition:

merinos

XLDnaute Accro
Salut @pompaero ,

Je crois que ton probleme provient de la compréhention de l'écriture du temps dans Excel.

par exemple le 13/03/2022 c'est le 44 633 jours depuis le jour ZERO

et le 44 633,5 c'est le 13 mars 2022 à 12h...
et le 44 633,75 c'est le 13 mars 2022 à 18h ( 18h= 3/4 de 24h)

tu peux monter visuellement "13/03/2022 18:00" ou juste "18:00" , cela reste 44 633,75

16/03/2022 06:21 - 13/03/2022 07:27 = 44636,26458333 - 44633,31041667 = 2,9541666 =2jours 22h 54 minutes.

Si tu notes juste l'heure par exemple 18h00 en fait tu ecris 0,75

donc 2,66666 c'est 2 jours et 2/3 de jours soit 2 jours et 16 heures


1646126818860.png


1646127078971.png
 

Pièces jointes

  • ecrire le temps.xlsx
    13.5 KB · Affichages: 17

TooFatBoy

XLDnaute Barbatruc
Je crois que ton probleme provient de la compréhention de l'écriture du temps dans Excel.
Je crois qu'en fait son problème provient plutôt de la macro qui détermine la durée journalière avec un calcul du genre DuréeJ = Hfin - Hdeb et que si Hfin est inférieur à Hdeb (comme c'est le cas avec Hdeb = 08:00 et Hfin = 02:00) ça donne une durée négative qui va donc se retrancher de la durée totale de la semaine et de la durée totale du mois.

J'ai essayé le modulo 1 mais, je ne sais pas pourquoi, ça n'a pas marché, alors du coup j'ajoute 1 si Hfin est strictement inférieur à Hdeb. ;)
 
Dernière édition:

pompaero

XLDnaute Impliqué
Bonsoir Marcel32, merinos,le fil

merinos merci de ton aide, mais ayant essayé les propositions de Marcel32, je suis resté la dessus et en plus ça fonctionne à merveille.
je me répette, encore grand merci à toi.

Marcel32, tu es trop fort et en plein de mille, c'est exactement mon attente, en plus tu ajoute une option de manière à accélérer le fonctionnement de la macro, top top top...
Tu ne peux pas imaginer le soulagement que tu m'amene, je vais pouvoir entammer mes planning du service.
Je test encore quelques temps et reviens te dire....
Merci, merci merci

bonne soirée.
Cordalement
pompaero