Le besoin est d’avoir une feuille Google Sheet permettant de calculer le nombre de jours ouvrés d’arret maladie entre une date de début et une date de fin. Ces nombres de jours doivent être répartis par mois

Expression des besoins

CAS 1 : Date de début et de fin d’arrêt maladie situé dans le même mois

C’est le cas le plus simple.

Premièrement, vérifier que les deux dates sont dans le même mois. La formule EOMONTH(;) permet d’obtenir le dernier jour du mois. On focuse sur le mois avec la fonction MONTH().

il suffit de prendre le nombre de jours ouvrés entre les deux dates.
pour cela, la formule GS  NETWORKDAYS.INTL(;) est toute indiquée

Exemple : NETWORKDAYS.INTL($A2;$B2) ou $A2 et $B2 sont les cellules contenant les informations nécessaires

Explications :

Si le mois de la date de début et de fin (ici, 01) sont dans le même mois, la fonction NETWORKDAYS affiche le nombre de jours travaillésésultat

CAS 2 : Date de début de maladie située dans un mois, et la date de fin dans le ou les mois suivants

Ce cas est particulier. En effet, il faut aussi prendre en compte que l’arret maladie peut commencer courant janvier et se finir  courant mars. Soit X jours en Janvier + l’ensemble des jours en Février + X jours en Mars

Astuce : Calculer le nombre de jours par mois

Il suffit de soustraire le premier jour du mois, au dernier. Le calcul du dernier jour du mois est : EOMONTH(CELLULE;0) ou CELLULE contient la date. Le calcul du premier jour du mois est : CELLULE(DAY(CELLULE)1) ou CELLULE contient la date

Résultat final

La répartition par mois se fait dans les bonnes colonnes

Voici la formule permettant de gérer les divers cas.

=IFERROR(IFS(AND(MONTH($A3)=MONTH(EOMONTH(D$1;0));MONTH($B3)=MONTH(EOMONTH(D$1;0)));NETWORKDAYS.INTL($A3;$B3);AND(MONTH($A3)=MONTH(EOMONTH(D$1;0));MONTH($B3)>MONTH(EOMONTH(D$1;0)));NETWORKDAYS.INTL($A3;EOMONTH(D$1;0));AND(MONTH($A3)<MONTH(EOMONTH(D$1;0));MONTH($B3)=MONTH(EOMONTH(D$1;0)));NETWORKDAYS.INTL(D$1(DAY(D$1)1);$B3);AND(MONTH($A3)<MONTH(EOMONTH(D$1;0));MONTH($B3)>MONTH(EOMONTH(D$1;0)));NETWORKDAYS.INTL(D$1(DAY(D$1)1);EOMONTH(D$1;0)));0)

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here