Accueil – Le CFO masqué › Forums › Power Query › Comment insérer une année variable dans un nom de colonne filtrée?
- This topic has 4 réponses, 3 participants, and was last updated il y a 3 years by Daniel.
-
AuteurArticles
-
28 novembre 2021 à 16 h 22 min #99499Guy PichardParticipant
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,
GuyAttachments:
You must be logged in to view attached files.28 novembre 2021 à 17 h 06 min #99501DanielParticipantBonjour 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 ParamAnneeNlet 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
Daniel29 novembre 2021 à 2 h 31 min #99507Stéphane LorinParticipantBonjour
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
29 novembre 2021 à 5 h 44 min #99509Guy PichardParticipantBonjour 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.29 novembre 2021 à 12 h 12 min #99523DanielParticipantBonjour 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 -
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.