Bonsoir,
Ton fractionnement en 5 relevés horaires à additionner ne simplifie pas... à moins que tu parviennes à structurer tes saisies pour aboutir à des formules simplifiées, mais qui impliquent des contraintes de saisie.
Je ne te propose pas une solution pour ton fichier tel qu'il se présente, mais une contribution sur les calculs horaires.
Soit : hd = heure de début de la plage de travail ou de présence
hf = heure de fin de la plage de travail ou de présence
L'écart entre hd et hf étant inférieur à 24h (soit au maximum de 23h 59min 59s)
On veut savoir quelle durée de cette plage se situe dans une plage prédéfinie (jour, nuit, autre...)
dp = heure de début de la plage prédéfinie
fp = heure de fin de la plage prédéfinie
Formule générale pour calculer la durée de la plage hd/hf incluse dans la plage dp/fp :
=SI(ET(hf+(hf<=dp)>=fp+(fp<dp);hf+(hf<=dp)<hd+(hd<=dp));fp+(fp<dp)-dp;MOD(MIN(hf+(hf<=dp);fp+(fp<dp))-MIN(hd+(hd<=dp);fp+(fp<dp));fp+(fp<dp)-dp))
Sa traduction en fonction personnalisée pourrait se révéler plus simple d'emploi :
Function DENPLAH(hd, hf, dp, fp)
Application.Volatile
If hd <= dp Then hd = hd + 1
If hf <= dp Then hf = hf + 1
If fp < dp Then fp = fp + 1
If hf >= fp And hf < hd Then
DENPLAH = fp - dp
Exit Function
End If
If hd > fp Then hd = fp
If hf > fp Then hf = fp
If hf - hd < 0 Then
DENPLAH = (fp - dp) + (hf - hd)
Else
DENPLAH = hf - hd
End If
End Function
Cordialement.