[Résolu][Calc] heure de nuit / changement heure été/hiver

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
anna.parker
Fraîchement OOthentifié
Messages : 4
Inscription : 17 mai 2024 07:37

[Résolu][Calc] heure de nuit / changement heure été/hiver

Message par anna.parker »

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
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
Avatar de l’utilisateur
njhub
PassiOOnné
PassiOOnné
Messages : 517
Inscription : 18 juin 2017 05:43
Localisation : 976

Re: [Calc] heure de nuit / changement heure été/hiver

Message par njhub »

Bonjour anna.parker, le forum

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))
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.

anna.parker.png
anna-parker.ods
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...

:wink:
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
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1189
Inscription : 19 août 2018 05:20

Re: [Calc] heure de nuit / changement heure été/hiver

Message par Dolev »

Bonjour,

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 Function
Je trouve quand même mesquin cette réduction d'heure qui est au final, imposé. C'est mon avis.
Vous 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

Message par anna.parker »

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.
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

Message par anna.parker »

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
libreoffice Version: 6.0.7.3 sous ubuntu 18.04.13
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1189
Inscription : 19 août 2018 05:20

Re: [Calc] heure de nuit / changement heure été/hiver

Message par 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 ?
Alors quel est l'intérêt de décompter l'heure ?
anna.parker a écrit : 20 mai 2024 06:20 Après lecture, la macro me semble cohérente.
Il vous reste à clore le sujet : viewtopic.php?t=3299

anna.parker a écrit : 20 mai 2024 06:20 J'ai juste openoffice calc qui me demande d'installer jre pour faire tourner la macro.
Prendre le temps de parcourir les tutoriels sur le sujet : viewforum.php?f=41
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

Message par anna.parker »

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