Comment insérer une année variable dans un nom de colonne filtrée?

Accueil – Le CFO masqué Forums Power Query Comment insérer une année variable dans un nom de colonne filtrée?

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

    Bonjour,

    J’exporte une requête BI sous Excel, pour combiner plusieurs classeurs.
    L’année 2021 est “en dur” dans l’en-tête des colonnes.
    Comment faire pour rendre l’année variable dans une requête sous Power Query, afin que le changement d’année soit transparent en janvier prochain?
    J’arrive à insérer un paramètre avec une année variable, lors du changement de type ou de suppression de colonnes, mais la dernière étape nécessite un filtre et je ne trouve pas la bonne syntaxe.
    #”Colonnes supprimées” = Table.RemoveColumns(#”Type modifié”,{“Logement “& ParamAnneeN, “Garage “& ParamAnneeN}),
    #”Lignes filtrées” = Table.SelectRows(#”Colonnes supprimées”, each ([Foyer 2021] <> 0))

    Si besoin, ce pourrait être un nouveau paramètre avec le mot “Foyer” et l’année assemblés [Foyer Année].
    Le classeur ci-joint expose la problématique simplifiée et le point jusqu’où je bloque.

    Cordialement,
    Guy

    Attachments:
    You must be logged in to view attached files.
    #99501
    Daniel Blanc
    Participant

    Bonjour Guy92, Le Forum,

    Je pense qu’il y a certainement mieux à faire, mais voici ce que je propose
    1 – Renommer Foyer 2021 en Foyer
    2 – Filtrer sur la colonne Foyer pour exclure les valeurs zéro
    3 – Renommer la colonne Foyer en Foyer 2021
    Bien entendu à la place de 2021, on se servira du ParamAnneeN

    
    let
        Source = Excel.CurrentWorkbook(){[Name="Tbl_TypeImmo"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Foyer "& ParamAnneeN, Int64.Type}, {"Logement "&ParamAnneeN, Int64.Type}, {"Garage "& ParamAnneeN, Int64.Type}}),
        #"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Logement "& ParamAnneeN, "Garage "& ParamAnneeN}),
        #"Colonnes renommées" = Table.RenameColumns(#"Colonnes supprimées",{{"Foyer " & ParamAnneeN, "Foyer"}}),
        #"Lignes filtrées1" = Table.SelectRows(#"Colonnes renommées", each ([Foyer] <> 0)),
        #"Colonnes renommées1" = Table.RenameColumns(#"Lignes filtrées1",{{"Foyer", "Foyer " & ParamAnneeN}})
    in
        #"Colonnes renommées1"
    

    En espérant que cela te donnera des pistes de solutions.
    Cordialement
    Daniel

    #99507
    Stéphane Lorin
    Participant

    Bonjour

    Vous pouvez faire le filtre directement en utilisant la fonction Record.Field.
    Le caractère _ désigne l’enregistrement en cours et vous indiquez le nom du champ avec votre paramètre (qui est en texte)

    #”Lignes filtrées” = Table.SelectRows(#”Colonnes supprimées”, each (Record.Field(_, “Foyer “&Année) <> 0))

    Stéphane

    #99509
    Guy92
    Participant

    Bonjour Daniel,
    Bonjour Stéphane,

    Vos deux solutions fonctionnent parfaitement.
    Avec peut-être une préférence pour la concision de Stéphane. 😉
    Le classeur joint présente les deux mises en œuvre, pour d’autres lecteurs éventuels.

    Je vous remercie tous les deux pour votre réactivité et votre pertinence.
    Terminée la corvée de changement d’année à chaque 1er janvier !

    Guy

    Attachments:
    You must be logged in to view attached files.
    #99523
    Daniel Blanc
    Participant

    Bonjour Guy, Stéphane, Le Forum,

    Content de voir que ton soucis de changement d’année est maintenant réglé.
    Bravo à Stéphane pour sa solution, cela m’a permis d’apprendre quelque chose mais surtout de régler élégamment le soucis de Guy et cela est plus important.
    Cordialement
    Daniel

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