Charger des sources dans Power Query variables par le nom
Bonjour mes amis
je suis sur un projet et je voudrais solliciter encore votre appui.
J'ai un dossier contenant des classeurs format .csv et dont les noms sont différents de par la date Ex: rapport de transaction du jj mm aaaa (jj le mm pour le mois et aaaa pour l'année).
Je voudrais charger ce(s) classeur(s) dans un autre classeur nommé Synthèse afin de les transformer dans l'éditeur Power query. Je voudrais savoir svp s'il serait possible de décider du fichier ou des fichiers à charger tout simplement en choisissant l'intervalle de date Ex: du 22 05 2023 au 23 05 2023 ou du 22 05 2023 au 22 05 2023 (cas d'un seul fichier).
Pour l'exemple je joins trois fichiers qui sont dans le même dossier.
Merci d'avance
Bonjour
Transforme tes cellules de choix de dates en Tableau structuré nommé Choix et passe le à PowerQuery
Commence ta requête de Synthèse par
let
Source = Folder.Files("T:\TEMP\__XLPRA\csv\V2"),
#"Personnalisée ajoutée" = Table.AddColumn(Source, "DateF", each Date.From(Text.BeforeDelimiter(Text.End([Name],14),"."))),
#"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Personnalisé", each Choix),
#"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée1", "Personnalisé", {"Date debut", "Date fin"}, {"Date debut", "Date fin"}),
#"Personnalisée ajoutée2" = Table.AddColumn(#"Personnalisé développé", "Filtre", each if [DateF]>=[Date debut] and [DateF]<=[Date fin] then 1 else null),
#"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée2", each [Filtre]<>null)
in
#"Lignes filtrées"adapter le chemin
Salut 78chris
merci pour ta réponse.
J'ai bien changé le chemin dans l'éditeur
Mais à la deuxième étape j'ai cette erreur
Peut être ais je oublié de changer d'autres paramètres. Une question dans le code Dax les noms Date debut et Date fin correspondent ils à des noms de cellules assignés dans l'onglet "Gestionnaire de noms" ?
Merci
RE
Tu n'as pas balancé le tableau Choix dans PQ (depuis une cellule, Données, A partir d'un tableau)
RE
Dans la requête Choix les colonnes dates doivent être typées en date et non en Date/heure
Bonjour 78chris
comme ceux ci?
Il n'y a plus de message d'erreur dans l'autre requête et le filtre fonctionne bien mais je n'arrive toujours pas à charger les tableaux. La dernière étape de la requête donne 0 ligne.
Aurais oublié quelques choses.
Merci pour ta patience
RE
Selon DateF aucune ligne n'est dans la fourchette de dates donc c'est normal...
Oui c'est exact avec les tests j'ai omis d'actualiser les fichiers présents avant de faire la capture. Là j'ai mis le fichier du jour par exemple et il a chargé et c'est marqué 1 au niveau de la colonne Filtre.
J'essaie de charger le tableau mais je ne tombe pas sur le tableau de la journée du 25 05 2023 mais ce tableau
Cdt
RE
je t'ai donné le début de la requête comme dit dans mon tout 1er message
Après le filtre à toi d'exploiter selon ce que contiennent tes fichiers et ton objectif de restitution
Tu as écrit "afin de les transformer dans l'éditeur Power query" mais on ne sait rien des transformations envisagées...
En général on ne garde que les colonnes Content et Name puis on développe Content ce qui provoque la création d'une arborescence et dont une fonction de transformation basée sur les étapes ajoutées ou non à la requête Transformer l'exemple de fichier pour transformer, analyser...
j'ai enfin pu terminé le code grâce à toi
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Totalement d'accord avec lui et toi
ca fait pas longtemps que j'ai commencé à apprendre Power Querry et m'y étais pas encore mis dans le langage M. J'hésitais un peu tripatouiller ton premier code mais après l'avoir fait et réussi, je contres content
Power querry offre tellement de possibilité c'est fou.
Voici ce que j'ai pu faire après ton dernier post. Mon problème se trouvait dans le format .csv des fichiers mais après des recherches sur le net j'ai trouver la bonne formule et les options à intégrer.
let
Source = Folder.Files("C:\Users\amouedraogo\Desktop\Rapport"),
#"Personnalisée ajoutée" = Table.AddColumn(Source, "DateF", each Date.From(Text.BeforeDelimiter(Text.End([Name],14),"."))),
#"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Personnalisé", each Choix),
#"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée1", "Personnalisé", {"Date debut", "Date fin"}, {"Date debut", "Date fin"}),
#"Personnalisée ajoutée2" = Table.AddColumn(#"Personnalisé développé", "Filtre", each if [DateF]>=[Date debut] and [DateF]<=[Date fin] then 1 else null),
#"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée2", each [Filtre] <> null),
#"Type modifié" = Table.TransformColumnTypes(#"Lignes filtrées",{{"Date fin", type date}, {"Date debut", type date}, {"DateF", type date}}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "DateF", "Date debut", "Date fin", "Filtre"}),
#"Personnalisée ajoutée3" = Table.AddColumn(#"Colonnes supprimées", "Personnalisé", each Csv.Document([Content],[Delimiter=";", Columns=17, Encoding=1252, QuoteStyle=QuoteStyle.None])),
#"Personnalisé développé1" = Table.ExpandTableColumn(#"Personnalisée ajoutée3", "Personnalisé", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17"}),
#"Colonnes supprimées1" = Table.RemoveColumns(#"Personnalisé développé1",{"Content", "Name"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Colonnes supprimées1", [PromoteAllScalars=true]),
#"Modifier type Date heure" = Table.TransformColumnTypes(#"En-têtes promus",{{"Symbole", type text}, {"Type", type text}, {"Statut", type text}, {"Cours", type text}, {"Volume", type text}, {"% chg.", type text}, {"Heure de transaction", type datetime}, {"Acheteur", type text}, {"Type_1", type text}, {"Compte", type text}, {"Référence", type text}, {"N° client", type text}, {"Vendeur", type text}, {"Type_2", type text}, {"Compte_3", type text}, {"Référence_4", type text}, {"N° client_5", type text}}),
#"Doublons symboles supp" = Table.SelectRows(#"Modifier type Date heure", each ([Symbole] <> "Symbole")),
#"Valeur remplacée les espaces vides" = Table.ReplaceValue(#"Doublons symboles supp","#(00A0)","",Replacer.ReplaceText,{"Cours"}),
#"Type modifié1" = Table.TransformColumnTypes(#"Valeur remplacée les espaces vides",{{"Cours", Int64.Type}})
in
#"Type modifié1"Merci beaucoup à toi Chris pour ton aide et ta patience. Bon weekend
Bonjour
Merci du retour
On n'a pas besoin de toucher au code : on se sert des options du ruban et du clic droit.
Mais comme on n'avait pas les billes sur ce que tu voulais faire, j'ai posté les premières lignes en code...
Bon WE
Hello 78chris
j'espère que tu vas bien.
Stp dis moi comment pourrais faire varier le chemin du dossier des fichiers que je fusionne. Je voudrais renseigner le lien dans une cellule (que je pourrais facilement modifier en cas de changement de dossier source ou d'ordinateur). Ensuite modifier le code M pour qu'il récupère le nouveau lien.
j'ai pensé à recuperer le lien en passant le nom de la cellule que j'ai nommé "source_rapport_transactions"
let
Source = Excel.CurrentWorkbook(){[Name="source_rapport_transactions"]},
#"Personnalisée ajoutée" = Table.AddColumn(Source, "DateF", each Date.From(Text.BeforeDelimiter(Text.End([Name],14),"."))),
#"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Personnalisé", each Choix),
#"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée1", "Personnalisé", {"Date debut", "Date fin"}, {"Date debut", "Date fin"}),
#"Personnalisée ajoutée2" = Table.AddColumn(#"Personnalisé développé", "Filtre", each if [DateF]>=[Date debut] and [DateF]<=[Date fin] then 1 else null),
#"Lignes filtrées" = Table.SelectRows(#"Personnalisée ajoutée2", each [Filtre] <> null),
#"Type modifié" = Table.TransformColumnTypes(#"Lignes filtrées",{{"Date fin", type date}, {"Date debut", type date}, {"DateF", type date}}),
#"Colonnes supprimées" = Table.RemoveColumns(#"Type modifié",{"Extension", "Date accessed", "Date modified", "Date created", "Attributes", "Folder Path", "DateF", "Date debut", "Date fin", "Filtre"}),
#"Personnalisée ajoutée3" = Table.AddColumn(#"Colonnes supprimées", "Personnalisé", each Csv.Document([Content],[Delimiter=";", Columns=17, Encoding=1252, QuoteStyle=QuoteStyle.None])),
#"Personnalisé développé1" = Table.ExpandTableColumn(#"Personnalisée ajoutée3", "Personnalisé", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8", "Column9", "Column10", "Column11", "Column12", "Column13", "Column14", "Column15", "Column16", "Column17"}),
#"Colonnes supprimées1" = Table.RemoveColumns(#"Personnalisé développé1",{"Content", "Name"}),
#"En-têtes promus" = Table.PromoteHeaders(#"Colonnes supprimées1", [PromoteAllScalars=true]),
#"Doublons symboles supp" = Table.SelectRows(#"En-têtes promus", each ([Symbole] <> "Symbole")),
#"Type modifié1" = Table.TransformColumnTypes(#"Doublons symboles supp",{{"Heure de transaction", type datetime}}),
#"Valeur remplacée les espaces vides" = Table.ReplaceValue(#"Type modifié1","#(00A0)","",Replacer.ReplaceText,{"Cours"}),
#"Type modifié2" = Table.TransformColumnTypes(#"Valeur remplacée les espaces vides",{{"Cours", Int64.Type}, {"Volume", Int64.Type}, {"% chg.", type number}, {"Acheteur", Int64.Type}, {"Compte", Int64.Type}, {"N° client", Int64.Type}, {"Vendeur", Int64.Type}, {"Compte_3", Int64.Type}, {"N° client_5", Int64.Type}})
in
#"Type modifié2"Mais je tombe sur cette erreur à la 2e étape
Merci d'avance
Bonjour
Excel.CurrentWorkbook(){[Name="source_rapport_transactions"]} doit remplacer tout ou partie"C:\Users\amouedraogo\Desktop\Rapport"dans Source de la requête initiale

