XL 2019 Convertir des jours et heures

netparty

XLDnaute Occasionnel
Re Bonjour à tous

Un tout grand merci à vous tous pour m'avoir apporté votre aide

J'ai encore une petite question.

J'aimerais pouvoir tenir compte d'une journée de travail de 8h donc si le début est à 23/02/2021 09:00:00 et la fin à 24/02/2021 09:00:00 le résultat ne doit pas être 24h.
Sima journée de travail est de 8 à 16h le 23/2 j'ai effectué 6h et le 24/2 j'ai effectué 1h donc au total j'ai 7h de travail.



Merci
 

Pièces jointes

  • heures.xlsm
    9.6 KB · Affichages: 24
Dernière édition:

patricktoulon

XLDnaute Barbatruc
Bonjour
une petite fonction perso pour te simplifier la tache
VB:
Function TimeToCumulHour(cel As Range) As Double
t = Split(Replace(Replace(cel, " jours ", ","), ":", ","), ",")
t(0) = (Val(t(0)) * 24) + Val(t(1))
TimeToCumulHour = (t(0) & IIf(UBound(t) = 2, "," & t(2), "")) * 1
End Function
dans ta cellule D2 tu met cette formule
=TimeToCumulHour(C2)
et tu étends ta formule vers le bas
bien sur tu peux ajouter une condition (SI) pour ne pas avoir a gerer le vide
=SI(C2<>"";TimeToCumulHour(C2);"")

résultat
demo7.gif
 

patricktoulon

XLDnaute Barbatruc
re
je m’énerve par ce que bien trop souvent je suis repris avec des arguments poubelles
et ça me gonfle alors réfléchissez un peu avant de vouloir corriger les autres
si ta remarque avait été cohérente je l'aurais accepté volontiers
@chris
en VBA ça donne cela
VB:
Sub test2()
MsgBox timeToCumulHour2([A3], [B3])
End Sub
Function timeToCumulHour2(cel1 As Range, cel2 As Range) As Double
Dim x#
x = Abs(CDate(cel1) - CDate(cel2))
timeToCumulHour2 = Application.Text(x, "[hh],mm")
End Function
 

fanch55

XLDnaute Barbatruc
re
je m’énerve par ce que bien trop souvent je suis repris avec des arguments poubelles
et ça me gonfle alors réfléchissez un peu avant de vouloir corriger les autres
si ta remarque avait été cohérente tu je l'aurais accepté volontiers
Désolé de t'avoir froissé, ce n’était aucunement une correction quelconque,
je m'étonnais juste que toi tu ais utilisé autant de replace ... 🤔 ( mais à seconde vue, c'est pertinent )

En fait, j'étais parti dans la même direction que ton code :
VB:
Function NbHours(celref As Range) As Double
    H = Split(celref, " jours "): M = Split(H(1), ":")
    NbHours = M(0) + (H(0) * 24) + M(1) / 100
End Function

Ce qui revient au même, je n'apporte rien de plus, la proposition de @chris est la meilleure .
 

patricktoulon

XLDnaute Barbatruc
re
a ben voila au moins la c'est réfléchi ca fait plaisir
je m'étonnais juste que toi tu ais utilisé autant de replace ... 🤔 ( mais à seconde vue, c'est pertinent )
et pose toi la question pourquoi je fait 2 replace
d’après toi quelle en est la raison

et pour la proposition de @chris oui et non
pourquoi
et bien par ce que si je veux faire des calculs avec la donnée je vois le cumul des heure mais la valeur ne l'ai pas

exemple si je veux par exemple ajouter 2 heures en E2
=D2+2 en formule je me retrouve avec 240,16 soit deux jours de plus
il faut faire = d2+(2/24) pour avoir 194,16


tandis qu'avec ma fonction perso j'ai bien un nombre de type double je fait =d2+2 et j'ai bien 194,16

comme quoi une question en cache plusieurs autres des fois

dont on réfléchi un peu plus longuement sur les potentiels aboutissants
vu!! ;)
 
Dernière édition:

netparty

XLDnaute Occasionnel
Bonjour à tous

Un tout grand merci à vous tous pour m'avoir apporté votre aide

J'ai encore une petite question.

J'aimerais pouvoir tenir compte d'une journée de travail de 8h donc si le début est à 23/02/2021 09:00:00 et la fin à 24/02/2021 09:00:00 le résultat ne doit pas être 24h.
Sima journée de travail est de 8 à 16h le 23/2 j'ai effectué 6h et le 24/2 j'ai effectué 1h donc au total j'ai 7h de travail.

Bonne fin de journée
 
Dernière édition:

Discussions similaires

Réponses
6
Affichages
501
Réponses
20
Affichages
949