Bonjour,
J'ai lu les nombreux sujets concernant les heures de jour et celles de nuit.
C'est toujours des formules à rallonge à mettre dans autant de cellules que nécessaire.
Pas simple à maintenir, s'il y a une modif dans une formule, il faut toutes les réécrire.
Je n'ai rien trouvé de probant pour le changement d'heure été/hiver.
Je voudrais clarifier/simplifier avec une fonction ou une macro.
Voici la table épurée :
colonne A : date heure du début (jjj jj/mm/aa hh:mm:ss)
colonne B : date heure de fin (jjj jj/mm/aa hh:mm:ss)
colonne C : durée totale ([hh]:mm:ss) entre B et A avec B - A
colonne D : durée totale nuit ([hh]:mm:ss) entre B et A avec heure_nuit(B;A) | la macro à réaliser
colonne E : durée totale jour ([hh]:mm:ss) entre B et A avec C - D
Heures nuit entre 21h00 et 06h00.
Merci pour vos explications afin d'arriver à écrire, enregistrer et utiliser cette macro ou fonction.
Il me semble que le changement d'heure été/hiver n'est pas pris en compte dans les fonctions (ou les formules trouvées dans ce forum) :
colonne A : 30/03/2024 22:00:00
colonne B : 31/03/2024 08:00:00
colonne C : affiche 10:00:00 au lieu de 09:00:00
colonne D : affiche 08:00:00 au lieu de 07:00:00
colonne E : affiche 02:00:00
[Résolu][Calc] heure de nuit / changement heure été/hiver
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
anna.parker
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 17 mai 2024 07:37
[Résolu][Calc] heure de nuit / changement heure été/hiver
Dernière modification par anna.parker le 21 mai 2024 17:34, modifié 2 fois.
libreoffice Version: 6.0.7.3 sous ubuntu 18.04.13
-
njhub
- PassiOOnné

- Messages : 517
- Inscription : 18 juin 2017 05:43
- Localisation : 976
Re: [Calc] heure de nuit / changement heure été/hiver
Bonjour anna.parker, le forum
testez la formule suivante en colonne D
1) EQUIV(ENT(B6);$J$1:$J$12;0): Cette fonction recherche, la date extraite de la valeur entière arrondie du temps dans la cellule B6, dans la plage $J$1:$J$12 et retourne sa position dans cette plage.
2) ESTNUM(EQUIV(...))/24: Le résultat de la EQUIV, on vérifie alors s'il s'agit d'un nombre, et si c'est le cas, cette valeur est divisée par 24.
3) ESTNUM(EQUIV(ENT(B6);$I$1:$I$12;0))/24: Similaire aux étapes précédentes, mais avec une plage différente ($I$1:$I$12).
4) SI((B6-ENT(B6))>6/24;6/24;(B6-ENT(B6))): la fonction SI vérifie si la valeur de temps dans la cellule B6 moins sa partie entière est supérieure à 6 heures. Si c'est vrai, il retourne 6 heures, sinon, il retourne la différence entre la valeur de temps et sa partie entière.
5) SI((A6-ENT(A6))>=21/24;(ENT(A6)-A6);0): la fonction SI vérifie si la valeur de temps dans la cellule A6 moins sa partie entière est supérieure ou égale à 21 heures. S'il est vrai, il retourne la différence entre la partie entière de la valeur de temps et la valeur de temps; sinon, il retourne 0.
6) Les résultats des calculs ci-dessus sont additionnés à l'aide de la fonction SOMME.
Il y aura sans doute des améliorations à apporter quand vous fournirez un fichier comprenant les horaires réels...
Par ailleurs je ne comprends pas comment le pointage horaire ne tient pas compte du décalage dû aux changements d'heures.
Personne de bonne foi n'abandonne son poste une heure avant ni ne le prend avec une heure de retard en oubliant le changement d'heure...

testez la formule suivante en colonne D
Code : Tout sélectionner
=SOMME(-ESTNUM(EQUIV(ENT(B6);$J$1:$J$12;0))/24;ESTNUM(EQUIV(ENT(B6);$I$1:$I$12;0))/24;SI((B6-ENT(B6))>6/24;6/24;(B6-ENT(B6)));SI((A6-ENT(A6))>=21/24;(ENT(A6)-A6);0))2) ESTNUM(EQUIV(...))/24: Le résultat de la EQUIV, on vérifie alors s'il s'agit d'un nombre, et si c'est le cas, cette valeur est divisée par 24.
3) ESTNUM(EQUIV(ENT(B6);$I$1:$I$12;0))/24: Similaire aux étapes précédentes, mais avec une plage différente ($I$1:$I$12).
4) SI((B6-ENT(B6))>6/24;6/24;(B6-ENT(B6))): la fonction SI vérifie si la valeur de temps dans la cellule B6 moins sa partie entière est supérieure à 6 heures. Si c'est vrai, il retourne 6 heures, sinon, il retourne la différence entre la valeur de temps et sa partie entière.
5) SI((A6-ENT(A6))>=21/24;(ENT(A6)-A6);0): la fonction SI vérifie si la valeur de temps dans la cellule A6 moins sa partie entière est supérieure ou égale à 21 heures. S'il est vrai, il retourne la différence entre la partie entière de la valeur de temps et la valeur de temps; sinon, il retourne 0.
6) Les résultats des calculs ci-dessus sont additionnés à l'aide de la fonction SOMME.
Il y aura sans doute des améliorations à apporter quand vous fournirez un fichier comprenant les horaires réels...
Par ailleurs je ne comprends pas comment le pointage horaire ne tient pas compte du décalage dû aux changements d'heures.
Personne de bonne foi n'abandonne son poste une heure avant ni ne le prend avec une heure de retard en oubliant le changement d'heure...
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 24.2.5.2 (x64) FR-YT 10/03/25
OS : Windows 11.0
OS : Windows 11.0
-
Dolev
- SuppOOrter

- Messages : 1189
- Inscription : 19 août 2018 05:20
Re: [Calc] heure de nuit / changement heure été/hiver
Bonjour,
L'auteure demandant une solution macro :
Je trouve quand même mesquin cette réduction d'heure qui est au final, imposé. C'est mon avis.
L'auteure demandant une solution macro :
Code : Tout sélectionner
Function CalculeHoraire(AdrDeb,AdrFin)
sCellDeb = CDate(AdrDeb)
sCellFin = CDate(AdrFin)
'Eclatement date et heure
aCellDeb = Split(sCellDeb, " ")
sDateDeb = aCellDeb(0)
sHeureDeb = aCellDeb(1)
aCellFin = Split(sCellFin, " ")
sDateFin = aCellFin(0)
sHeureFin = aCellFin(1)
sAnnee = Year(sDateFin)
'On calcule
sResult = DateDiff("h", sDateDeb &" "& sHeureDeb, sDateFin &" "& sHeureFin)
'Quelle est la date du changement d'heure
enEte = DerDimMois(sAnnee, "ETE")
enHiver = DerDimMois(sAnnee, "HIVER")
'Savoir si la date de fin subie un changement d'heure
if Left(sDateFin,5) = Left(enEte,5) then
if Hour(sHeureFin) > 3 then sResult = sResult -1
endif
if Left(sDateFin,5) = Left(enHiver,5) then
if Hour(sHeureFin) > 3 then sResult = sResult +1
endif
CalculeHoraire = sResult
End Function
Function DerDimMois(Annee, Periode)
if Periode = "ETE" then
Mois = 3 : Jour = 31
else
Mois = 10 : Jour = 30
endif
DateSerie = DateSerial(Annee, Mois, Jour)
JourSem = DatePart("w",DateSerie,2) '1 = lundi, 2 = mardi...
if JourSem = 7 then
DerDimMois = DateSerie
else
DerDimMois = DateSerial(Annee, Mois, Jour - JourSem)
endif
End FunctionVous ne pouvez pas consulter les pièces jointes insérées à ce message.
Open Office 4.1.16 sous Windows 11
-
anna.parker
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 17 mai 2024 07:37
Re: [Calc] heure de nuit / changement heure été/hiver
Bonsoir,
Merci infiniment pour vos réponses.
Les horaires ne sont pas pour du "travail" humain.
Il peut donc y avoir plus de 24h de "travail" consécutives.
@njhub :
- Comme expliqué dans ma question, s'il faut modifier la formule, c'est plus simple et rapide de passer par une fonction et ses paramètres que de modifier toutes les cellules contenant la formule, même avec un copier/coller.
- Le pointage est fait en fonction de l'heure locale, pas de l'heure GMT.
@Dolev
- Pour un travail humain, si son salaire est mensuel, qu'il y ait 30 ou 31 jours, c'est le même salaire, non ?
En intérim, c'est fonction des conventions collectives, il me semble.
L'heure en + ou - suit les même règles.
- Merci pour la solution macro, je vais la tester rapidement.
Merci infiniment pour vos réponses.
Les horaires ne sont pas pour du "travail" humain.
Il peut donc y avoir plus de 24h de "travail" consécutives.
@njhub :
- Comme expliqué dans ma question, s'il faut modifier la formule, c'est plus simple et rapide de passer par une fonction et ses paramètres que de modifier toutes les cellules contenant la formule, même avec un copier/coller.
- Le pointage est fait en fonction de l'heure locale, pas de l'heure GMT.
@Dolev
- Pour un travail humain, si son salaire est mensuel, qu'il y ait 30 ou 31 jours, c'est le même salaire, non ?
En intérim, c'est fonction des conventions collectives, il me semble.
L'heure en + ou - suit les même règles.
- Merci pour la solution macro, je vais la tester rapidement.
libreoffice Version: 6.0.7.3 sous ubuntu 18.04.13
-
anna.parker
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 17 mai 2024 07:37
Re: [Calc] heure de nuit / changement heure été/hiver
Bonjour,
Après lecture, la macro me semble cohérente.
J'ai juste openoffice calc qui me demande d'installer jre pour faire tourner la macro.
Je regarderai ça plus tard.
Bonne journée
Après lecture, la macro me semble cohérente.
J'ai juste openoffice calc qui me demande d'installer jre pour faire tourner la macro.
Je regarderai ça plus tard.
Bonne journée
libreoffice Version: 6.0.7.3 sous ubuntu 18.04.13
-
Dolev
- SuppOOrter

- Messages : 1189
- Inscription : 19 août 2018 05:20
Re: [Calc] heure de nuit / changement heure été/hiver
Alors quel est l'intérêt de décompter l'heure ?Pour un travail humain, si son salaire est mensuel, qu'il y ait 30 ou 31 jours, c'est le même salaire, non ?
Il vous reste à clore le sujet : viewtopic.php?t=3299
Prendre le temps de parcourir les tutoriels sur le sujet : viewforum.php?f=41anna.parker a écrit : ↑20 mai 2024 06:20 J'ai juste openoffice calc qui me demande d'installer jre pour faire tourner la macro.
Open Office 4.1.16 sous Windows 11
-
anna.parker
- Fraîchement OOthentifié
- Messages : 4
- Inscription : 17 mai 2024 07:37
Re: [Calc] heure de nuit / changement heure été/hiver
Justement, tout le monde n'a pas la chance d'être mensualisée, je suis intérimaire en 3x8.
libreoffice Version: 6.0.7.3 sous ubuntu 18.04.13