Power Query recherche valeurs et insertion dates

Bonjour,

J'aurai besoin d'un peu d'aide sur la construction d'une requête dans Power Query afin d'insérer des colonnes avec des dates et de pouvoir faire une sélection en fonction d'une date inscrite dans une cellule de mon tableur.

Dans le fichier en pièce jointe, j'ai dans la feuille "1-ANNÉE N" un tableau de suivi avec beaucoup de colonne, et parmi toutes ces colonnes seules certaines m'intéressent afin de faire chaque mois une intégration en masse des valeurs d'indexation du mois concerné.

J'ai donc essayé de construire une requête (onglet "t_final"), mais je ne vois pas comment faire pour avoir un résultat identique à la feuille "Masque colonnes" (tableau avec 7 colonnes), mais je bloque sur plusieurs choses...

Dans mon tableau de base feuille "1-ANNÉE-N" la ligne 3 n'est pas dans le tableau car pour aller chercher mes valeurs de calcul (ici j'ai simplement mis les données sans les formule pour alléger) je me base sur les date en AG3,AT3,BG3 etc. puisqu'un tableau formaté ne peut pas avoir de formule dans les en-têtes.

Au final je voudrais qu'en choisissant en cellule K2 le mois à intégrer je me retrouve avec un tableau identique à celui de la feuille "Masque colonnes" avec en date d'application la date de la cellule K2 et en Taux (%) celui du mois correspondant de la feuille "1-ANNÉE N", et un filtrage par valeur "C" dans la colonne "Type de tiers".

J'ai voulu croiser avec le tableau des dates de l'onglet "LISTES OK" mais c'est plus compliqué que prévu...

Au niveau de la mise en forme j'ai mis dans ma requête les résultats en % mais lorsque les données arrivent dans ma feuille "t_final" est sont en format Standard (quand je formate les cellules alors plus de problème mais je pensais que le format défini dans Power Query se reportait dans le feuille Excel).

Merci d'avance pour votre aide en espérant avoir été assez clair.

Bonjour,

Une proposition, si j'ai bien compris.

Cordialement.

Hello,

Sur base du travail de Zebulon, une proposition

let
    Source = Excel.CurrentWorkbook(){[Name="t_final"]}[Content],
    GarderCol = Table.SelectColumns(Source,{"Libellé du tiers", "Numéro de tiers", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre", "Code société", "Code Agence", "Type#(lf)de tiers"}),
    Unpivot = Table.UnpivotOtherColumns(GarderCol, {"Code société", "Code Agence", "Numéro de tiers", "Type#(lf)de tiers", "Libellé du tiers"}, "Attribut", "Valeur"),
    Type = Table.TransformColumnTypes(Unpivot,{{"Valeur", Percentage.Type}}),
    Filter = Table.SelectRows(Type, each ([Attribut] = Date.MonthName(Mois) and [#"Type#(lf)de tiers"] = "C")),
    Pivot = Table.Pivot(Filter, List.Distinct(Filter[Attribut]), "Attribut", "Valeur"),
    AddDate = Table.AddColumn(Pivot, "Date", each Mois, type date)
in
    AddDate

Attention à renommer le "Février" dans ton tableau par "février" sinon problème au niveau du Date.MonthName

Pour le changement d'ordre des colonnes il faut que je le fasse mais je vais manger.

@Zebulon, il y avait un "juin" en dur dans le code donc quand on change de mois ça ne fonctionnait pas bien

@+

Edit : j'ai supprimé la zone nommée _MoisChoisi car il y avait déjà une zone Mois qui existait

Bonjour à tous !

Une autre approche Power Query ?

let
    Source = Excel.CurrentWorkbook(){[Name="t_final"]}[Content],
    SelCol = Table.SelectColumns(Source,{"Code société",  "Code Agence", "Numéro de tiers", "Type#(lf)de tiers","Libellé du tiers", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"}),
    Type = Table.TransformColumnTypes(SelCol,{{"janvier", Percentage.Type}, {"février", Percentage.Type}, {"mars", Percentage.Type}, {"avril", Percentage.Type}, {"mai", Percentage.Type}, {"juin", Percentage.Type}, {"juillet", Percentage.Type}, {"août", Percentage.Type}, {"septembre", Percentage.Type}, {"octobre", Percentage.Type}, {"novembre", Percentage.Type}, {"décembre", Percentage.Type}}),
    Filtre = Table.SelectRows(Type, each ([#"Type#(lf)de tiers"] = "C")),
    Final = Table.SelectColumns(Filtre,List.Combine({List.FirstN(Table.ColumnNames(Filtre),5),{Date.MonthName(Excel.CurrentWorkbook(){[Name="ChoixMois"]}[Content]{0}[Column1])}}))
in
    Final

Note : La cellule K2 de la feuille "1-ANNÉE N" a été nommée ChoixMois

Merci à tous,

J'ai testé la solution de Zébulon avec les petites modifications de Baroute et ça fonctionne.

J'ai rajouté la permutation des colonnes à la fin pour être dans le bon ordre et renommer également la colonne qui comporte le mois en en-tête par "Taux (%)" mais du coup ça me renvoi une erreur en me disant que le mois X n'est pas trouvé. Je ne vois pas comment rectifier ça.

Pour la solution de JFL tout est dans le bon ordre mais il manque juste la colonne "Date d'application" et de même, si je renomme la colonne qui en en-tête comporte le nom du mois alors quand je relance la requête avec un nouveau mois alors ça me dit que la colonne "Mois X" n'a pas été trouvée...

Je teste mais en vain...

Bonjour à tous de nouveau !

Quel est l'intérêt de dupliquer sur x lignes la même information (le mois sélectionné) alors qu'il peut utilement figurer en en-tête de colonne dans le tableau final ?

Version amendée de la requête :

let
    Source = Excel.CurrentWorkbook(){[Name="t_final"]}[Content],
    AjtMois = Table.AddColumn(Source, "Date d'application", each Date.MonthName(Excel.CurrentWorkbook(){[Name="ChoixMois"]}[Content]{0}[Column1])),
    SelCol = Table.SelectColumns(AjtMois,{"Code société",  "Code Agence", "Numéro de tiers", "Type#(lf)de tiers","Libellé du tiers","Date d'application", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"}),
    Type = Table.TransformColumnTypes(SelCol,{{"janvier", Percentage.Type}, {"février", Percentage.Type}, {"mars", Percentage.Type}, {"avril", Percentage.Type}, {"mai", Percentage.Type}, {"juin", Percentage.Type}, {"juillet", Percentage.Type}, {"août", Percentage.Type}, {"septembre", Percentage.Type}, {"octobre", Percentage.Type}, {"novembre", Percentage.Type}, {"décembre", Percentage.Type}}),
    Filtre = Table.SelectRows(Type, each ([#"Type#(lf)de tiers"] = "C")),
    SelMois = Table.SelectColumns(Filtre,List.Combine({List.FirstN(Table.ColumnNames(Filtre),6),{Date.MonthName(Excel.CurrentWorkbook(){[Name="ChoixMois"]}[Content]{0}[Column1])}})),
    Final = Table.RenameColumns(SelMois,List.Zip({{List.Last(Table.ColumnNames(SelMois))},{"Taux %"}}))
in
    Final

L'intérêt de la duplication de la date sur chaque ligne c'est que la requête me permet d'intégrer en masse dans un logiciel métier l'ensemble des taux et il me faut donc pour chaque ligne la date de début d'application.

Bonjour à tous de nouveau !

Cette justification éclaire parfaitement ma lanterne.

Donc tout est dans le bon ordre au niveau de la version amendée mais au niveau de la date d'application il me faut la date sous le format "01/MM/AAAA", comme la cellule K2 et je ne voit pas comment modifier ça dans le code...

Bonjour à tous de nouveau !

Format adapté :

let
    Source = Excel.CurrentWorkbook(){[Name="t_final"]}[Content],
    AjtMois =   let 
                   da=Date.From(Excel.CurrentWorkbook(){[Name="ChoixMois"]}[Content]{0}[Column1])
                in Table.AddColumn(Source, "Date d'application", each da),
    SelCol = Table.SelectColumns(AjtMois,{"Code société",  "Code Agence", "Numéro de tiers", "Type#(lf)de tiers","Libellé du tiers","Date d'application", "janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"}),
    Type = Table.TransformColumnTypes(SelCol,{{"janvier", Percentage.Type}, {"février", Percentage.Type}, {"mars", Percentage.Type}, {"avril", Percentage.Type}, {"mai", Percentage.Type}, {"juin", Percentage.Type}, {"juillet", Percentage.Type}, {"août", Percentage.Type}, {"septembre", Percentage.Type}, {"octobre", Percentage.Type}, {"novembre", Percentage.Type}, {"décembre", Percentage.Type}}),
    Filtre = Table.SelectRows(Type, each ([#"Type#(lf)de tiers"] = "C")),
    SelMois = Table.SelectColumns(Filtre,List.Combine({List.FirstN(Table.ColumnNames(Filtre),6),{Date.MonthName(Excel.CurrentWorkbook(){[Name="ChoixMois"]}[Content]{0}[Column1])}})),
    Final = Table.RenameColumns(SelMois,List.Zip({{List.Last(Table.ColumnNames(SelMois))},{"Taux %"}}))
in
    Final

Merci beaucoup, ça fonctionne parfaitement ! C'est exactement ce qu'il me fallait, je vais décortiquer pour bien comprendre comment tu as fais.

Bon week-end.

Bonjour à tous de nouveau !

Bien...

Je vous remercie de ce retour.

Rechercher des sujets similaires à "power query recherche valeurs insertion dates"