Numéro semaine ISO

Accueil – Le CFO masqué Forums Power Query Numéro semaine ISO

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

    Bonjour,
    Je recherche la bonne formule sous Power Query pour trouver le numéro de semaine du calendrier grégorien.
    Par exemple, pour le 21 janvier 2021, nous étions en semaine n°3.
    J’ai utilisé la formule suivante : Date.WeekOfYear([date]) mais je trouve 4 et non 3.
    Idem si j’utilise la formule : Date.WeekOfYear([date]), Day.Monday).
    Je précise que je travaille sur des données de l’année 2020 et 2021 (j’avais pensé à soustraire 1 dans ma formule mais ce serait bon que pour les semaines en 2021).

    Je dois rendre un dossier d’ici 2 jours alors si vous pouvez m’aider rapidement, je vous en serai très reconnaissante (il me manque juste cette info !).

    Par avance, merci pour votre aide.

    #88828
    Stéphane Lorin
    Participant

    Bonjour

    La semaine 1 ISO est celle du 1er jeudi de l’année
    Le n° de la semaine ISO se calcule donc par l’écart entre le jeudi de la semaine actuelle et ce premier jeudi de l’année (de l’année de jeudi de la semaine, pas l’année de la date elle-même).

    En PowerQuery, cela peut se traduire par cette fonction personnalisée de ma conception (il y a peut être plus simple)
    Je calcule le jeudi de la semaine en partant de la date, en ajoutant 3 et en retirant le n° du jour en commençant par lundi.
    Puis je calcule le 1er jeudi de l’année en partant du 7 janvier et en retirant le jour de la semaine du 1er janvier avec le critère que la semaine commence le vendredi (Day.Friday) c’est à dire que si le 1er janvier est un vendredi, le 1er jeudi sera le 7.

    let
    Source = (Date as date) => let
    #”Jeudi Semaine” = Date.AddDays(Date,3-Date.DayOfWeek(Date,Day.Monday)),
    #”1er Jeudi Année” = #date(Date.Year(#”Jeudi Semaine”),1,7-Date.DayOfWeek(#date(Date.Year(#”Jeudi Semaine”),1,1),Day.Friday)),
    #”N° Semaine” = Duration.Days(#”Jeudi Semaine” – #”1er Jeudi Année”)/7+1
    in
    #”N° Semaine”
    in
    Source

    Vous pouvez copier/coller ce code dans une requête vide et l’utiliser dans vos requêtes.

    Cordialement

    Stéphane

    #88829
    magali.careddu
    Participant

    Merci beaucoup pour votre aide et l’effort que vous avez fait pour trouver ce code . Je viens de m’apercevoir que mon titre de message ne correspondait pas à ma demande. C’est le numéro de semaine du calendrier grégorien dont j’ai besoin.
    Entre temps, j’ai réglé mon problème en utilisant une formule conditionnelle pour chaque année, en rajoutant ou soustrayant 1.
    Je verrai ultérieurement pour améliorer ma requête.
    Encore merci pour votre retour.
    Bien cordialement.
    Magali

    #88830
    Stéphane Lorin
    Participant

    Bonjour
    Je ne vois pas la différence entre ce que vous cherchez et le n° de la semaine ISO 8601 mais le principal est d’avoir une solution même si elle me semble a priori “bancale” (avez-vous testé le 1er janvier 2022 ? c’est en semaine 52 de 2021 en ISO et non en 1 de 2022)

    En complément, si vous souhaitez récupérer la semaine au format 2021 S13 il faut modifier la fin de la fonction :

    in
    Text.From(Date.Year(#”Jeudi Semaine”))&” S”&Text.PadStart(Text.From(#”N° Semaine”),2,”0″)

    au lieu de

    in
    #”N° Semaine”

    Cordialement

    Stéphane

    #88831
    magali.careddu
    Participant

    Merci beaucoup Stéphane pour tous ces éclairages.

    #88890
    Gui Leblanc
    Participant

    Bonjour,

    Je me permets d’ajouter une solution toute simple glanée sur internet hier, car j’avais exactement le même problème.
    Supposons que votre table de date soit dans calendrier[date], il suffit de taper la formule dax :

    NoSemaine = weeknum(calendrier[date],21)

    et voilà !

    #88977
    magali.careddu
    Participant

    Bonjour, effectivement en formule DAX la solution existe (j’ai, comme vous, récemment utilisée cette formule).
    Par contre, sous Power Query, en langage M, il ne semble pas avoir de formule équivalente.
    Je voudrais extraire d’une colonne le numéro de semaine du calendrier Grégorien sans injecter les données dans Power Pivot…
    Merci à vous.

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