Microsoft 365 Délimiteur Power Query

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Derrdio

XLDnaute Nouveau
Bonjour à tous,

J'ai un problème sur l'utilisation de Power Query. J'ai plusieurs fichiers .txt dans un dossier, je fais donc "obtenir des données" puis "A partir d'un fichier" puis "A partir d'un dossier" et pour finir "Combiner et transformer les données". Et voila le problème sur la photo ci-dessous. Il me met toutes les données de mon fichier les une en dessous des autres et je n'ai pas la possibilité de mettre en place un délimiteur pour les transformer en colonne.

1698740288173.png


Avez-vous une solution pour avoir une colonne propre pour chaque données et que pour chaque nouveau fichier ca s'affiche en dessous ?

Voici deux fichiers anonymes pour y voir plus clair.

Merci d'avance
 

Pièces jointes

Solution
Bonjour Derrdio, Cousinhub, le forum,

Ci-dessous une autre approche qui suppose que la structure des fichiers texte est constante (que "les infos sont à récupérer toujours aux même lignes").
Il faut adapter l'emplacement du dossier contenant tous les bons de réceptions à la première étape PathDossiersBR :
PowerQuery:
let
    PathDossiersBR = "C:\...\BR",

    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}}),
            ExtratTxtInfos = let txtLines = SupprEspaces[Column1] 
                in [#"N° Bon de pesée"=txtLines{17}, 
                    #"Nom du...
Bonjour,
Pour essayer (je dis bien "essayer") de comprendre le besoin, peux-tu mettre un txt "vierge", ne comprenant que les en-têtes voulus (précédés d'un astérisque), et mettre toutes (je dis bien "toutes") les données susceptibles d'y apparaître précédées d'un @, par exemple :

*Date et heure
*Site
*N° bon d’intervention
*N°Dossier

@Date et heure
@Site
@N° bon d’intervention
@N°Dossier


1 – GENERALITE
*Nom du client
@nom du client (est-ce une donnée possible? - vide dans tes exemples...)
*Nom du producteur
@nom du producteur
...
...

Juste histoire de voir si cela est possible, ou du moins, à mon niveau...
@ te relire
 
Bonjour,
Pour essayer (je dis bien "essayer") de comprendre le besoin, peux-tu mettre un txt "vierge", ne comprenant que les en-têtes voulus (précédés d'un astérisque), et mettre toutes (je dis bien "toutes") les données susceptibles d'y apparaître précédées d'un @, par exemple :

*Date et heure
*Site
*N° bon d’intervention
*N°Dossier

@Date et heure
@Site
@N° bon d’intervention
@N°Dossier


1 – GENERALITE
*Nom du client
@nom du client (est-ce une donnée possible? - vide dans tes exemples...)
*Nom du producteur
@nom du producteur
...
...

Juste histoire de voir si cela est possible, ou du moins, à mon niveau...
@ te relire
Merci pour la réponse. Je pense qu'une image vaut mille mots alors voici le résultat attendu :
1698743983298.png

Effectivement, il y a un nom du producteur mais pour des raisons de confidentialité je ne pourrais pas en donner.
Les liens sont générés via un code VBA donc ne pas s'y soucier.
Je faisais actuellement cette tache d'importation avec un code VBA mais c'était très long, je pense gagner du temps avec PQ.
 
Re-,
Voici un premier jet.
Dans l'onglet "Paramètre", la cellule A1 est nommée "Dossier", et tu y mets l'adresse du répertoire comportant tes fichiers "Txt".
Puis dans l'onglet "Recap", clic droit dans la requête, "Actualiser" (ou ruban Données/Actualiser tout)
Si ça te va...
PS, j'ai compris "nom du producteur" et pas "nom du client"
 

Pièces jointes

Re-,
Voici un premier jet.
Dans l'onglet "Paramètre", la cellule A1 est nommée "Dossier", et tu y mets l'adresse du répertoire comportant tes fichiers "Txt".
Puis dans l'onglet "Recap", clic droit dans la requête, "Actualiser" (ou ruban Données/Actualiser tout)
Si ça te va...
PS, j'ai compris "nom du producteur" et pas "nom du client"
Merci pour le retour.
Je dois m'absenter, je vois ca jeudi et je fais un retour.
 
Bonjour Derrdio, Cousinhub, le forum,

Ci-dessous une autre approche qui suppose que la structure des fichiers texte est constante (que "les infos sont à récupérer toujours aux même lignes").
Il faut adapter l'emplacement du dossier contenant tous les bons de réceptions à la première étape PathDossiersBR :
PowerQuery:
let
    PathDossiersBR = "C:\...\BR",

    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}}),
            ExtratTxtInfos = let txtLines = SupprEspaces[Column1] 
                in [#"N° Bon de pesée"=txtLines{17}, 
                    #"Nom du producteur"=txtLines{14}, 
                    Immatriculation=txtLines{20}, 
                    Désignation=txtLines{33},
                    #"Code déchet"=txtLines{37},
                    Humidité=txtLines{41},
                    Conformité=txtLines{52}]
        in
            ExtratTxtInfos,

    FichierDuDossier = Folder.Files(PathDossiersBR),
    AjoutColonnePathFichier = Table.AddColumn(FichierDuDossier, "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é"}, {"N° Bon de pesée", "Nom du producteur", "Immatriculation", "Désignation", "Code déchet", "Humidité", "Conformité"})

in
    DevelopTxtInfos

Par contre, je n'ai pas compris où récupérer l'information Immatriculation. Ici, j'ai supposé qu'elle était en ligne 21. Il faudra donc peut-être adapter la ligne Immatriculation=txtLines{20}.

A+
 
Bonjour @Cousinhub @mromain @merinos et le forum,

@mromain, le code fonctionne parfaitement et permet un gain de temps juste inimaginable, merci beaucoup. Est-ce que si je mets des fichiers autres que des txt dans le dossier ca posera problème ou alors le code se concentre sur les txt seulement ?

@Cousinhub @merinos, merci pour vos retours également. Au vue de la simplicité de mise en place du code de @mromain, vous ne m'en voudrez pas si je pars la dessus.

Encore merci pour votre aide
 
Bonjour Derrdio, Cousinhub, merinos et le forum,

Est-ce que si je mets des fichiers autres que des txt dans le dossier ca posera problème ou alors le code se concentre sur les txt seulement ?
Actuellement, le code "suppose" qu'il n'y a que des fichiers texte à traiter dans le dossier.
Il faut ajouter une étape de filtre après l'étape FichierDuDossier :
  1. sélectionner l'étape FichierDuDossier ;
  2. ajouter un filtre sur les extensions de type .txt.
ModifPQ.png

Tu peux aussi filtrer sur le nom des fichiers suivant ton contexte.

A+
 
Bonjour Derrdio, Cousinhub, merinos et le forum,


Actuellement, le code "suppose" qu'il n'y a que des fichiers texte à traiter dans le dossier.
Il faut ajouter une étape de filtre après l'étape FichierDuDossier :
  1. sélectionner l'étape FichierDuDossier ;
  2. ajouter un filtre sur les extensions de type .txt.
Regarde la pièce jointe 1182645
Tu peux aussi filtrer sur le nom des fichiers suivant ton contexte.

A+
C'est parfait, merci beaucoup !
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
465
Réponses
2
Affichages
451
  • Question Question
Réponses
16
Affichages
1 K
Réponses
5
Affichages
340
Réponses
2
Affichages
575
Retour