Accueil – Le CFO masqué › Forums › Power Query › trouver le nombre de jour ouvré sans les feriés
Mots-clés : power query;power bi
- Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par
patrickblancseau, le il y a 12 mois.
-
AuteurArticles
-
30 janvier 2022 à 17 h 49 min #100995
patrickblancseau
ParticipantBonjour j’essais d’associer plusieurs requêtes dans power query
mon but et de compte le nombre de jour ouvré et d’enlevé les ferié
si quelqu’un a une idée je suis preneur
Cordialement–>la premiere trouve les le weekends
(DATE_DEBUT as date, DATE_FIN as date) as number => let Liste_De_Date = List.Dates(DATE_DEBUT, Number.From(DATE_FIN - DATE_DEBUT)+1, #duration(1, 0, 0, 0)), Weekend = List.Select(Liste_De_Date, each Date.DayOfWeek(_, Day.Monday) >= 5), Supprimer_Weekend = List.RemoveItems(Liste_De_Date, Weekend), Nombre_De_Jours = List.Count(Supprimer_Weekend) in Nombre_De_Jours
–>la deuxieme trouve les jours feriés
let Source = (date) => let annee = Date.Year(date), jour = Date.Day(date), mois = Date.Month(date), paques = fnJourPaques(annee), paquesLundi = Date.AddDays(paques, 1), ascension=Date.AddDays(paques, 39), pentecote=Date.AddDays(paques, 49), pentecoteLundi = Date.AddDays(pentecote, 1), estFerié = if (mois=1 and jour=1) then 1 else if (mois=5 and jour=1) then 1 else if (mois=5 and jour=8) then 1 else if (mois=7 and jour=14) then 1 else if (mois=8 and jour=15) then 1 else if (mois=11 and jour=1) then 1 else if (mois=11 and jour=11) then 1 else if (mois=12 and jour=25) then 1 //else if (date = paques) then 1 else if (date = paquesLundi) then 1 else if (date = ascension) then 1 //else if (date = pentecote) then 1 else if (date = pentecoteLundi) then 1 else 0 in estFerié in Source
recherche du jour de paques
let Source = (annee)=> let g = Number.Mod(annee,19), c = Number.IntegerDivide(annee,100), c4 = Number.IntegerDivide(c,4), e=Number.IntegerDivide((8*c+13),25), h=Number.Mod((19*g+ c-c4-e+15),30), h2 = if (h=29) then 28 else if (h=28 and g>10) then h-1 else h, k=Number.IntegerDivide(h2,28), p=Number.IntegerDivide(29,(h2+1)), q=Number.IntegerDivide((21-g),11), i=(k*p*q-1)*k+h2, b=Number.IntegerDivide(annee,4)+annee, j1=b+i+2+c4-c, j2=Number.Mod(j1,7), r=28+i-j2, jourDePaquesSTR="01/03/"&Text.From(annee), jourDePaquesDate = Date.FromText(jourDePaquesSTR), jourDePaques=Date.AddDays(jourDePaquesDate, r-1) in jourDePaques in Source
-
Ce sujet a été modifié le il y a 1 année par
patrickblancseau.
2 février 2022 à 3 h 50 min #101125Stéphane Lorin
ParticipantBonjour
ça me parait bien compliqué.
Personnellement j’aurai une liste de jour fériés dans une table manuelle (ce sont des données figées, variables suivant les pays/régions)ensuite je préfère sélectionner les jours du lundi au vendredi plutôt que de retirer les WE et ensuite retirer les jours fériés
(DATE_DEBUT as date, DATE_FIN as date) as number =>
let
Liste_De_Date = List.Dates(DATE_DEBUT, Number.From(DATE_FIN – DATE_DEBUT)+1, #duration(1, 0, 0, 0)),
Hors_Weekend = List.Select(Liste_De_Date, each Date.DayOfWeek(_, Day.Monday) <= 5),
#”Supprimer_Fériés” = List.RemoveItems(Liste_De_Date, Jours_Fériés),
Nombre_De_Jours = List.Count(#”Supprimer_Fériés”)
in
Nombre_De_Jours7 février 2022 à 17 h 54 min #101251patrickblancseau
ParticipantBonjour stephaen,
j’y avais pensé, mais je me suis dit que cela est encore une table en plus
mais vu la complexité et le temps, j’ai choisis ta solution
merci -
Ce sujet a été modifié le il y a 1 année par
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.