Microsoft 365 Chemin accès PowerQuery

Derrdio

XLDnaute Nouveau
Bonjour à tous,

Ce sujet est dans la continuité de cette discussion https://excel-downloads.com/threads/delimiteur-power-query.20079323/ , vous pouvez donc y jeter un coup d'œil pour en savoir plus. Il y a des fichiers anonymes pour faire des tests.

Avec le code PowerQuery pour l'importation des données, je voulais savoir si il était possible de mettre le chemin d'accès du fichier .txt en question dans la colonne R au moment de l'importation ?

Voici le code PQ que j'utilise :

PowerQuery:
let
    PathDossiersBR = "C:\Users\VOC325\OneDrive - SUEZ\Bon réception Fameck Teams\Exploitation données",

    fnExtractTxtInfo = (txtBinary as binary) as record =>
        let
            ExtractTxt = Csv.Document(txtBinary,[Delimiter="~", Columns=1, Encoding=1252, QuoteStyle=QuoteStyle.None]),
            SupprEspaces = Table.TransformColumns(ExtractTxt,{{"Column1", Text.Trim, type text}}),
            TxtLines = SupprEspaces[Column1],
            HumiditeValue = TxtLines{44},
            ConformiteValue = if Text.Upper(HumiditeValue) = "OUI" then TxtLines{53} else TxtLines{49},
            ExtratTxtInfos = [
                #"N° Bon de pesée"=TxtLines{17},
                #"Nom du producteur"=TxtLines{15},
                Immatriculation=TxtLines{20},
                Désignation=TxtLines{33},
                #"Code déchet"=TxtLines{37},
                Humidité=HumiditeValue,
                Conformité=ConformiteValue,
                Date=TxtLines{5}
            ]
        in
            ExtratTxtInfos,

    FichierDuDossier = Folder.Files(PathDossiersBR),
    #"Lignes filtrées" = Table.SelectRows(FichierDuDossier, each ([Extension] = ".txt")),
    AjoutColonnePathFichier = Table.AddColumn(#"Lignes filtrées", "Path", each Text.Combine({[Folder Path], [Name]}, ""), type text),
    ColonnesSélectionnées = Table.SelectColumns(AjoutColonnePathFichier,{"Path", "Name", "Content"}),
    ExtractTxtInfos = Table.TransformColumns(ColonnesSélectionnées,{{"Content", fnExtractTxtInfo, type record}}),
    DevelopTxtInfos = Table.ExpandRecordColumn(ExtractTxtInfos, "Content", {"N° Bon de pesée", "Nom du producteur", "Immatriculation", "Désignation", "Code déchet", "Humidité", "Conformité","Date"}, {"N° Bon de pesée", "Nom du producteur", "Immatriculation", "Désignation", "Code déchet", "Humidité", "Conformité","Date"}),
    #"Colonnes supprimées" = Table.RemoveColumns(DevelopTxtInfos,{"Path", "Name"}),
    #"Colonnes permutées" = Table.ReorderColumns(#"Colonnes supprimées",{"N° Bon de pesée", "Date", "Nom du producteur", "Immatriculation", "Désignation", "Code déchet", "Humidité", "Conformité"})

in
    #"Colonnes permutées"

A dispo si besoin,

Merci d'avance
 

merinos-BernardEtang

XLDnaute Accro
Bonjour @Derrdio ,

je travaille autrement:

je crée un query qui ouvre UN fichier:
VB:
let
    Source = Excel.Workbook(File.Contents("\\xxxxx.local\TS$\TS_Userdata\JPW857\Downloads\ctr site 1.xlsx"), null, true),
    #"Contrats par site_Sheet" = Source{[Item="Contrats par site",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(#"Contrats par site_Sheet", [PromoteAllScalars=true])
in
    #"Promoted Headers"

puis je le transforme en FONCTION que je peux appliquer a des fichiers:

Code:
(THEFILE)=>
let
    Source = Excel.Workbook(File.Contents(THEFILE), null, true),
    #"Contrats par site_Sheet" = Source{[Item="Contrats par site",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(#"Contrats par site_Sheet", [PromoteAllScalars=true])
in
    #"Promoted Headers"

et enfin en faisant un query qui prends tout un directory j'applique la fonction aux fichiers...

Code:
let
    Source = Folder.Files("\\xxxxx.local\TS$\TS_Userdata\JPW857\Downloads"),
    #"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([Name], "ctr site")),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Custom", each [Folder Path] & [Name]),
    #"Invoked Custom Function" = Table.AddColumn(#"Added Custom", "DATA", each #"FCTN-FIHIER"([Custom])),
    #"Removed Other Columns" = Table.SelectColumns(#"Invoked Custom Function",{"DATA", "Folder Path", "Name"}),
    #"Expanded DATA" = Table.ExpandTableColumn(#"Removed Other Columns", "DATA", {"Nom Contrat", "Entité première", "Nom Site", "SITE TYPE", "Site Reference", "RESOURCE", "Reference Contrat", "FREQ_VALUE"}, {"DATA.Nom Contrat", "DATA.Entité première", "DATA.Nom Site", "DATA.SITE TYPE", "DATA.Site Reference", "DATA.RESOURCE", "DATA.Reference Contrat", "DATA.FREQ_VALUE"})
in
    #"Expanded DATA"
En faisont comme cela , je peux garder toutes les descriptions des fichiers... dont le path
 

Derrdio

XLDnaute Nouveau
Bonjour @Derrdio ,

je travaille autrement:

je crée un query qui ouvre UN fichier:
VB:
let
    Source = Excel.Workbook(File.Contents("\\xxxxx.local\TS$\TS_Userdata\JPW857\Downloads\ctr site 1.xlsx"), null, true),
    #"Contrats par site_Sheet" = Source{[Item="Contrats par site",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(#"Contrats par site_Sheet", [PromoteAllScalars=true])
in
    #"Promoted Headers"

puis je le transforme en FONCTION que je peux appliquer a des fichiers:

Code:
(THEFILE)=>
let
    Source = Excel.Workbook(File.Contents(THEFILE), null, true),
    #"Contrats par site_Sheet" = Source{[Item="Contrats par site",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(#"Contrats par site_Sheet", [PromoteAllScalars=true])
in
    #"Promoted Headers"

et enfin en faisant un query qui prends tout un directory j'applique la fonction aux fichiers...

Code:
let
    Source = Folder.Files("\\xxxxx.local\TS$\TS_Userdata\JPW857\Downloads"),
    #"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([Name], "ctr site")),
    #"Added Custom" = Table.AddColumn(#"Filtered Rows", "Custom", each [Folder Path] & [Name]),
    #"Invoked Custom Function" = Table.AddColumn(#"Added Custom", "DATA", each #"FCTN-FIHIER"([Custom])),
    #"Removed Other Columns" = Table.SelectColumns(#"Invoked Custom Function",{"DATA", "Folder Path", "Name"}),
    #"Expanded DATA" = Table.ExpandTableColumn(#"Removed Other Columns", "DATA", {"Nom Contrat", "Entité première", "Nom Site", "SITE TYPE", "Site Reference", "RESOURCE", "Reference Contrat", "FREQ_VALUE"}, {"DATA.Nom Contrat", "DATA.Entité première", "DATA.Nom Site", "DATA.SITE TYPE", "DATA.Site Reference", "DATA.RESOURCE", "DATA.Reference Contrat", "DATA.FREQ_VALUE"})
in
    #"Expanded DATA"
En faisont comme cela , je peux garder toutes les descriptions des fichiers... dont le path

Bonjour @merinos ,

Je commence à comprendre un peu VBA et PQ mais la je dois avouer que ca me dépasse. C'est possible d'avoir une petite explication ou d'annoter le code ?

Merci d'avance
 

Statistiques des forums

Discussions
315 091
Messages
2 116 109
Membres
112 662
dernier inscrit
lou75