Toutes mes réponses sur les forums

12 sujets de 1 à 12 (sur un total de 12)
  • Auteur
    Articles
  • en réponse à : Liste des jours feries de 4 dernieres annees #136965
    Antoine Fixary
    Participant

    Bonjour,

    désolé, j’ai ouvert votre fichier et ça ma paru bien compliquié. J’ai une solution “clé en main” qui existe :

    Elle utilise 2 fonctions qui calcule le nombre de jours ouvrés soit pour une année civile soit pour plusieurs années civiles (jusqu’à 3 ans).

    Fonction fnJoursOuvresAnnee

    A utiliser si l’on est certain que la période ne concerne toujours qu’une seule année :

    // Calcul le nombre de jours ouvrées (hors week-end et jours fériés)

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    annee = Date.Year(DATE_DEBUT),

    ////////////////////////////////
    // Calcul du jour du dimanche de Pâques (nécessaire pour calcul des jours fériés)
    ////////////////////////////////
    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,
    paques=Date.AddDays(#date(annee,3,1), r-1),

    ////////////////////////////////
    // Création de la liste des jours fériés
    ////////////////////////////////
    joursFeries = {#date(annee,1,1), // Jour de l’an
    Date.AddDays(paques, -2), // Vendredi saint (férié en Alsace Moselle)
    paques, // Dimanche de Pâques
    Date.AddDays(paques, 1), // Lundi de Pâques
    #date(annee,5,1), // Fête du travail
    #date(annee,5,8), // Victoire 1945
    Date.AddDays(paques, 39), // Ascension
    Date.AddDays(paques, 49), // Pentecote
    Date.AddDays(paques, 50), // Lundi de pentecote
    #date(annee,7,14), // Fête nationale
    #date(annee,8,15), // Assomption
    #date(annee,11,1), // La Toussaint
    #date(annee,11,11), // Armistice 1918
    #date(annee,12,25), // Noel
    #date(annee,12,26)}, // Saint-Etienne (férié en Alsace Moselle)

    ////////////////////////////////
    // Calcul du nombre de jours ouvrés entre 2 dates d’une même année
    ////////////////////////////////
    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),
    supprimer_JoursFeriés = List.RemoveItems(supprimer_Weekend, joursFeries),
    nombre_De_Jours = List.Count(supprimer_JoursFeriés)
    in
    nombre_De_Jours

    Fonction fnJoursOuvresMultiAnnee à utiliser si la période peut courir sur 1 ou
    2 ans (nécessite fnJoursOuvresAnnee)

    // Calcul le nombre de jours ouvrées (hors week-end et jours feriés) jusqu’a des dates espacées de 2 ans.

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    anneeDebut = Date.Year(DATE_DEBUT),
    anneeFin = Date.Year(DATE_FIN),
    nombre_De_Jours = if anneeFin – anneeDebut = 0 then
    fnJoursOuvresAnnee(DATE_DEBUT,DATE_FIN)
    else if anneeFin – anneeDebut = 1 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else if anneeFin – anneeDebut = 2 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeDebut+1,1,1),#date(anneeDebut+1,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else
    error “Ecart de plus de 2 ans entre les dates”
    in
    nombre_De_Jours

    en réponse à : historique et cumul #136721
    Antoine Fixary
    Participant

    Bonjour,

    je n’avais pas le temps de jeter un oeil avant.

    Malheureusement, mes compétences en PowerQuery ne me permettent pas de vous proposer une solution.

    Cordialement

    en réponse à : historique et cumul #136076
    Antoine Fixary
    Participant

    Bonjour,

    pourriez-vous donner un exmple chiffré (mettre àjour votre fichier avec un exemple de ce que vous voulez cululer).

    Merci, Antoine

    en réponse à : historique et cumul #136067
    Antoine Fixary
    Participant

    Bonjour,

    ajouter une colonne personnalisée pour avoir un champ “Année-Mois” et regrouper par “Année_Mois” / N° Série.

    Voir fichier joint en PJ.

    Le résultat obtenu ne correspond pas au niveau des valeurs (si ça correspond à vos attentes, vous auriez pu, à minima, créer un exemple valable). Si ce n’est pas bon, précisez votre demande SVP.

    Cordialement.

    Attachments:
    You must be logged in to view attached files.
    en réponse à : SOS Date Max dans un dataflow #132681
    Antoine Fixary
    Participant

    Re-bonjour,

    désolé, ça dépasse mes compétences. Je n’ai jamais eu ce ces.

    Par contre, vous pouvez peut-être ne garder que ces 2 colonnes pour faire le tri puis réintégrer les données manquantes avec une requete juste sur les lignes qui vous intéresse. Comme dit, sans avoir les données en main, c’est compliqué de répondre.

    Belle journée.

    en réponse à : Charge de travail journalière #132675
    Antoine Fixary
    Participant

    Bonjour,

    votre besoin est-il toujours d’actualité.

    De ce que je comprends, un tableau croisé dynamique permettrait d’avoir la vue d’ensemble.

    Par contre, pour faire le TCD, il faudra “exploser” chaque ligne en autant de lignes que nécessaire.

    Exemple : Si il y 5h du 01/01/20xx au 05/01/20xx, il faut 5 lignes avec une ligne par jour pour cet enregistrement et 1h pour chaque ligne si j’ai bien compris.

    Faut-il prendre les jours travaillé en compte ?

    J’attends votre retour pour avancer.

    Cordialement.

    en réponse à : SOS Date Max dans un dataflow #132674
    Antoine Fixary
    Participant

    Bonjour,

    si vous faites un tri par “Référence” puis “Date”. Puis vous mettez cette table en Buffer (Table.Buffer). Et enfin, vous supprimer les doublons pour la référence. Vous devriez obtenir votre résultat.

    J’espère avoir été clair.

    Cordialement

    en réponse à : Chargement requête Power Query #127193
    Antoine Fixary
    Participant

    Bonjour,

    je n’ai jamais vu cette option dans Power Query d’Excel.

    Ne serait ce pas une fonction uniquement disponible dans Power BI ?

    Belle journée, Antoine

    en réponse à : Format de date lors du chargement #127192
    Antoine Fixary
    Participant

    Bonjour Kassandra,

    j’avais le même problème dans Excel 16. Depuis que nous sommes passé à Excel 365, la format semble être conservé (à confirmer par d’autres).

    Belle journée, Antoine

    en réponse à : trouver le nombre de jour ouvré sans les feriés #127190
    Antoine Fixary
    Participant

    Encore une petite coquille (pourquoi on ne peut pas modifier ces posts ?)

    Nouveau code à changer pour le calcul du la liste “joursFeries”, erreur mineure pour Pâques :
    ////////////////////////////////
    // Création de la liste des jours fériés
    ////////////////////////////////
    joursFeries = {#date(annee,1,1), // Jour de l’an
    Date.AddDays(paques, -2), // Vendredi saint (férié en Alsace Moselle)
    paques, // Dimanche de Pâques
    Date.AddDays(paques, 1), // Lundi de Pâques
    #date(annee,5,1), // Fête du travail
    #date(annee,5,8), // Victoire 1945
    Date.AddDays(paques, 39), // Ascension
    Date.AddDays(paques, 49), // Pentecote
    Date.AddDays(paques, 50), // Lundi de pentecote
    #date(annee,7,14), // Fête nationale
    #date(annee,8,15), // Assomption
    #date(annee,11,1), // La Toussaint
    #date(annee,11,11), // Armistice 1918
    #date(annee,12,25), // Noel
    #date(annee,12,26)}, // Saint-Etienne (férié en Alsace Moselle)

    en réponse à : trouver le nombre de jour ouvré sans les feriés #127189
    Antoine Fixary
    Participant

    Bonjour,

    n’ayant pas trouvé le moyen de modifié mon post précédent, ci-dessous mon code légèrement amélioré.

    Si quelqu’un connait la syntaxe pour intégré du code sur ce forum, je suis intéressé, par ce n’est pas du BBcode à priori.

    Toujours 2 fonctions en fonction des besoins :

    Fonction fnJoursOuvresAnnee – A utiliser si l’on est certain que la période ne concerne toujours qu’une seule année :

    // Calcul le nombre de jours ouvrées (hors week-end et jours fériés)

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    annee = Date.Year(DATE_DEBUT),

    ////////////////////////////////
    // Calcul du jour du dimanche de Pâques (nécessaire pour calcul des jours fériés)
    ////////////////////////////////
    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,
    paques=Date.AddDays(#date(annee,3,1), r-1),

    ////////////////////////////////
    // Création de la liste des jours fériés
    ////////////////////////////////
    joursFeries = {#date(annee,1,1), // Jour de l’an
    Date.AddDays(paques, -2), // Vendredi saint (férié en Alsace Moselle)
    Date.AddDays(paques, 1), // Dimanche de Pâques
    #date(annee,5,1), // Fête du travail
    #date(annee,5,8), // Victoire 1945
    Date.AddDays(paques, 39), // Ascension
    Date.AddDays(paques, 49), // Pentecote
    Date.AddDays(paques, 50), // Lundi de pentecote
    #date(annee,7,14), // Fête nationale
    #date(annee,8,15), // Assomption
    #date(annee,11,1), // La Toussaint
    #date(annee,11,11), // Armistice 1918
    #date(annee,12,25), // Noel
    #date(annee,12,26)}, // Saint-Etienne (férié en Alsace Moselle)

    ////////////////////////////////
    // Calcul du nombre de jours ouvrés entre 2 dates d’une même année
    ////////////////////////////////
    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),
    supprimer_JoursFeriés = List.RemoveItems(supprimer_Weekend, joursFeries),
    nombre_De_Jours = List.Count(supprimer_JoursFeriés)
    in
    nombre_De_Jours

    Fonction fnJoursOuvresMultiAnnee à utiliser si la période peut courir sur 1 ou
    2 ans (nécessite fnJoursOuvresAnnee)

    // Calcul le nombre de jours ouvrées (hors week-end et jours feriés) jusqu’a des dates espacées de 2 ans.

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    anneeDebut = Date.Year(DATE_DEBUT),
    anneeFin = Date.Year(DATE_FIN),
    nombre_De_Jours = if anneeFin – anneeDebut = 0 then
    fnJoursOuvresAnnee(DATE_DEBUT,DATE_FIN)
    else if anneeFin – anneeDebut = 1 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else if anneeFin – anneeDebut = 2 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeDebut+1,1,1),#date(anneeDebut+1,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else
    error “Ecart de plus de 2 ans entre les dates”
    in
    nombre_De_Jours

    Belle journée à tous.

    en réponse à : trouver le nombre de jour ouvré sans les feriés #127168
    Antoine Fixary
    Participant

    Bonjour, je viens après la guerre, mais jamais le même problème et les codes ci*dessus m’ont permis de le résoudre.

    Ci-joint, mon humble contribution.

    Fonction fnJoursOuvresAnnee

    A utiliser si l’on est certain que la période ne concerne toujours qu’une seule année :
    [code]
    // Calcul le nombre de jours ouvrées (hors week-end et jours fériés)

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    annee = Date.Year(DATE_DEBUT),

    ////////////////////////////////
    // Calcul du jour du dimanche de Pâques (nécessaire pour calcul des jours fériés)
    ////////////////////////////////
    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),
    paques=Date.AddDays(jourDePaquesDate, r-1),

    ////////////////////////////////
    // Création de la liste des jours fériés
    ////////////////////////////////
    jourDeLAn = #date(annee,1,1),
    paquesVendredi = Date.AddDays(paques, -2),
    paquesLundi = Date.AddDays(paques, 1),
    feteTravail = #date(annee,5,1),
    victoire1945 = #date(annee,5,8),
    ascension=Date.AddDays(paques, 39),
    pentecote=Date.AddDays(paques, 49),
    pentecoteLundi = Date.AddDays(pentecote, 1),
    feteNationale = #date(annee,7,14),
    assomption = #date(annee,8,15),
    toussaint = #date(annee,11,1),
    armistice1918 = #date(annee,11,11),
    noel = #date(annee,12,25),
    saintEtienne = #date(annee,12,26),
    joursFeries = {jourDeLAn} & {paquesVendredi} & {paques} & {paquesLundi} & {feteTravail} & {victoire1945} & {ascension} & {pentecote} & {pentecoteLundi} & {feteNationale} & {assomption} & {toussaint} & {armistice1918} & {noel} & {saintEtienne},

    ////////////////////////////////
    // Calcul du nombre de jours ouvrés entre 2 dates d’une même année
    ////////////////////////////////
    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),
    supprimer_JoursFeriés = List.RemoveItems(supprimer_Weekend, joursFeries),
    nombre_De_Jours = List.Count(supprimer_JoursFeriés)
    in
    nombre_De_Jours
    [/code]

    Fonction fnJoursOuvresMultiAnnee à utliser si la période peut courir sur ou
    ans (nécessite fnJoursOuvresAnnee)

    [code]
    // Calcul le nombre de jours ouvrées (hors week-end et jours feriés) jusqu’a des dates espacées de 2 ans.

    (DATE_DEBUT as date, DATE_FIN as date) as number =>
    let
    anneeDebut = Date.Year(DATE_DEBUT),
    anneeFin = Date.Year(DATE_FIN),
    nombre_De_Jours = if anneeFin – anneeDebut = 0 then
    fnJoursOuvresAnnee(DATE_DEBUT,DATE_FIN)
    else if anneeFin – anneeDebut = 1 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else if anneeFin – anneeDebut = 2 then
    fnJoursOuvresAnnee(DATE_DEBUT,#date(anneeDebut,12,31)) + fnJoursOuvresAnnee(#date(anneeDebut+1,1,1),#date(anneeDebut+1,12,31)) + fnJoursOuvresAnnee(#date(anneeFin,1,1),DATE_FIN)
    else
    error “Ecart de plus de 2 ans entre les dates”
    in
    nombre_De_Jours
    [/code]

    Ces codes ne sont pas nécessairement optimisés, mais ils font le job.

    Belle journée

12 sujets de 1 à 12 (sur un total de 12)