OVH Cloud OVH Cloud

des macros pour des formules

3 réponses
Avatar
Ulysse
Bonjour à tous,
Je calcule des heures de présence (travail de nuit) entre :
* 21h et 22h ;
* 22h et 6h.

En C5 heure début de travail
D5 heure fin de travail

Pour calculer la présence entre 21h et 22h j'utilise cette formule:
=SI(ET(C5>=$G$1;C5<=$G$2;D5<=C5);$G$2-C5;SI(ET(C5<=$G$1;D5>=$G$2);$G$2-$G$1;SI(ET(C5<=$G$1;D5>=$G$1;D5<=$G$2);D5-$G$1;SI(ET(C5>=$G$1;D5<=$G$2;D5>C5);D5-C5;SI(ET(C5>=$G$1;C5<=$G$2;D5>=$G$2);$G$2-C5;SI(ET(C5<$G$1;D5<C5);$G$2-$G$1;""))))))

G1 = 21
G2 = 22

Pour le calcul des heures de travail entre 22h et 6h voici la formule :
=SI(ET(C5>=$H$2;C5<=$H$1;D5>=$H$1;D5<=24);D5-$H$1;SI(ET(C5>=$H$2;C5<=$H$1;D5<C5;D5<=$H$2);(24-$H$1+D5);SI(ET(C5>=$H$2;C5<=$H$1;D5<C5;D5>=$H$2);($H$2+24-$H$1);SI(ET(C5>=$H$1;C5<=24;D5>C5;D5<=24);D5-C5;SI(ET(C5>=$H$1;C5<=24;D5<C5;D5<6);(D5+24-C5);AD5)))))
en AD5 la suite de la formule :
=SI(ET(C5>=$H$1;C5<=24;D5<C5;D5>=$H$2);($H$2+24-C5);SI(ET(C5<$H$2;C5<D5;D5>=$H$2);$H$2-C5;SI(ET(C5<$H$2;C5<D5;D5<$H$2);D5-C5;"")))

H1 = 22
H2 = 6

Un coup de main !

3 réponses

Avatar
AV
Je calcule des heures de présence (travail de nuit) entre :
* 21h et 22h ;
* 22h et 6h.


Cellules au format horaire
Les heures entre 21h et 22h :
=SI(fin>=début;MAX(0;MIN(fin;22/24)-MAX(début;21/24));MAX(0;22/24-MAX(début;21/24))+MAX(0;MIN(fin;22/24)-21/24))
Les heures entre 22h et 6h :
=MOD(fin-début;1)-SI(fin>=début;MAX(0;MIN(fin;22/24)-MAX(début;6/24));MAX(0;22/24-MAX(début;6/24))+MAX(0;MIN(fin;22/24)-6/24))

PS : Que vient faire le terme "macro" dans la question ?

AV

Avatar
Ulysse
Pardon, j'ai oublié le format des heures de début, de fin de travail et le
résultat sont en centième. Ex. 20h30mn = 20,50 ; 22h45mn = 22,75 ; 6h20mn =
6,33 ...


Je calcule des heures de présence (travail de nuit) entre :
* 21h et 22h ;
* 22h et 6h.


Cellules au format horaire
Les heures entre 21h et 22h :
=SI(fin>=début;MAX(0;MIN(fin;22/24)-MAX(début;21/24));MAX(0;22/24-MAX(début;21/24))+MAX(0;MIN(fin;22/24)-21/24))
Les heures entre 22h et 6h :
=MOD(fin-début;1)-SI(fin>=début;MAX(0;MIN(fin;22/24)-MAX(début;6/24));MAX(0;22/24-MAX(début;6/24))+MAX(0;MIN(fin;22/24)-6/24))

PS : Que vient faire le terme "macro" dans la question ?

AV






Avatar
AV
Pardon, j'ai oublié le format des heures de début, de fin de travail et le
résultat sont en centième. Ex. 20h30mn = 20,50 ; 22h45mn = 22,75 ; 6h20mn > 6,33 ...


Il faut diviser "les heures" par 24 !
=SI(fin/24>=début/24;MAX(0;MIN(fin/24;22/24)-MAX(début/24;21/24));MAX(0;22/24-MAX(début/24;21/24))+MAX(0;MIN(fin/24;22/24)-21/24))

=MOD(fin/24-début/24;1)-SI(fin/24>=début/24;MAX(0;MIN(fin/24;22/24)-MAX(début/24;6/24));MAX(0;22/24-MAX(début/24;6/24))+MAX(0;MIN(fin/24;22/24)-6/24))

AV