trouver le nombre de jour ouvré sans les feriés

Accueil – Le CFO masqué Forums Power Query trouver le nombre de jour ouvré sans les feriés

Mots-clés : 

  • Ce sujet contient 2 réponses, 2 participants et a été mis à jour pour la dernière fois par patrickblancseau, le il y a 3 mois et 2 semaines.
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #100995
    patrickblancseau
    Participant

    Bonjour 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 3 mois et 3 semaines par patrickblancseau.
    #101125
    Stéphane Lorin
    Participant

    Bonjour
    ç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_Jours

    #101251
    patrickblancseau
    Participant

    Bonjour 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

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.