1 2 3 4 5 6 7 8 9 10 11 12
| (début as date, fin as date, fériés) =>
let
Début2=Date.AddDays(début, if Date.DayOfWeek(début)>=5 then 7-Date.DayOfWeek(début) else 0), // date de début ou lundi suivant si début en WE
Fin2=Date.AddDays(fin, if Date.DayOfWeek(fin)>=5 then 4-Date.DayOfWeek(fin) else 0), // date de début ou vendredi précédant si fin en WE
JourDébut2=Date.DayOfWeek(Début2), // Jour de la semaine de début (0 si lundi, 4 si vendredi)
JourFin2=Date.DayOfWeek(Fin2), // Jour de la semaine de fin (0 si lundi, 4 si vendredi)
SemainePleine = Number.IntegerDivide(Duration.Days(Fin2- Début2),7), // Nb de semaines pleines
SemaineIncomplète = JourFin2 - JourDébut2 + 1 + Number.From(JourFin2 < JourDébut2)*5, // Nb de jours dans la semaine incomplète
Nb_fériés = List.Count(List.Select(fériés, each _ >=Début2 and _<=Fin2 and Date.DayOfWeek(_)<5))// Nb de jours fériés entre début et fin hors WE
in
SemainePleine *5 + SemaineIncomplète - Nb_fériés |
Partager