PowerQuery - compiler des fichiers CSV

Bonjour,

Input

J'ai regroupé dans un dossier une multitude de fichiers au format ".csv" qui ont tous le même type de jeux de données, et la même architecture. C'est à dire :

  • colonne 1 : index horodatage
  • colonne 2 : valeurs teméprature

Output souhaité

Je souhaite compiler ces fichiers csv pour obtenir un fichier avec le format suivant

  • ligne 1 : entête de colonne
  • colonne 1 : index horodatage
  • colonne 2 : valeurs température d'un fichier csv
  • colonne 3 : valeurs température d'un autre fichier csv
  • colonne X: valeurs température d'un X autre fichier csv

Mon avancement

Je débute avec PowerQuery et ai suivi le tuto suivant :

7EouTU_Mbsk

Mais je bloque, après avoir définit les requêtes, en essayant de charger les données dans excel. Les sorties proposés ont le format suivant :

  • colonne 1 : horodatage
  • colonne 2 : les valeurs d'un fichier
  • pas de colonne 3, 4 ,5, X ...

Il me semble que je doive transformer les colonnes pour les faire pivoter, et ainsi avoir les valeurs sous formles de différentes colonnes et pas des lignes mais je n'y arrive pas.

Si l'un de vous peux m'aiguiller ça m'aiderait grandement !

Merci d'avance,

Voici un zip avec les csv, et l'excel de compilation foireux.

Bonjour,

Une proposition à étudier.

Cdlt.

Bonjour Jean-Eric,

Merci mille fois, ça correspond tout à fait à ma demande ! Sauf le nom des colonnes, où j’aurai préféré avoir le nom des sondes, mais j'imagine pouvoir corriger ça.

Je repasse une à une les étapes réalisées pour comprendre. Et je bloque sur celle de la fonction réalisée "FxExtract". Pouvez-vous me l'expliquer ?

Merci d'avance

Batoine

Bonjour Jean-Eric,

Merci mille fois, ça correspond tout à fait à ma demande ! Sauf le nom des colonnes, où j’aurai préféré avoir le nom des sondes, mais j'imagine pouvoir corriger ça.

Je repasse une à une les étapes réalisées pour comprendre. Et je bloque sur celle de la fonction réalisée "FxExtract". Pouvez-vous me l'expliquer ?

Merci d'avance

Batoine

En cherchant un peu plus longtemps, j'ai compris !

Je partage ma compréhension et découverte du sujet. Voici ce qui m'a aidé dans ma recherche :

Cette vidéo youtube de compréhension des fonctions personnalisés.

Ce que j'en retiens :

  • ajouter dans le bandeau à gauche une requête vide (Nouvelle requête -> Autres sources -> requête vide)
  • Ecriture de la fonction. Je n'avais pas vu que le champs de formule pouvait être agrandi... En relisant votre formule je comprends, avec mon vocabulaire : on dit que ce que l'on va ajouter des données à partir de fichiers CSV. On définit ce que l'on veut en soustraite : 2 premières colonnes et supprimer l'en-tête.
  • On appelle cette fonction dans l'étape de l'appel de fonction personnalisée

Cette exercice m'amène une autre question :

Est-il possible de faire un pivot de colonne sur autre chose qu'une colonne de valeur numérique, autrement dit, aurais-je pu pivoter sur du texte, pour avoir in fine des entêtes de colonne plus compréhensible que 1, 2, 3.... ?

Merci encore Jean-Eric pour votre aide qui m'a motivée à chercher

Batoine

Bonjour à tous

Exemple de titrage avec l'ajout d'une colonne pour remplacer Index

Tu peux la modifier à ton goût

J'ai modifié aussi le répertoire qui ne suivait pas dans la requête et dans l'onglet Paramètres

10batoine2.xlsx (35.09 Ko)

Re,

Bonjour 78chris,

J'ai été un peu rapide sur le coup.

Une petite mise à jour.

Cdlt.

fxExtract

(FileName as text)=>
let
    FolderPath=Répertoire,
    Source = Csv.Document(File.Contents(FolderPath&FileName),[Delimiter=";", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Removed Top Rows" = Table.Skip(Source,1)
in
    #"Removed Top Rows"

Added Prefix

= Table.TransformColumns(#"Renamed Columns", {{"Index", each "T° " & Text.From(_, "fr-FR"), type text}})

RE

@Jean-Eric

Super le préfixe !

A noter que sur l'add on on ne peut utiliser Répertoire comme variable "globale"...

(je sais que batoine a 365 mais cela peut servir à d'autres)

Bonjour à tous

Exemple de titrage avec l'ajout d'une colonne pour remplacer Index

Tu peux la modifier à ton goût

J'ai modifié aussi le répertoire qui ne suivait pas dans la requête et dans l'onglet Paramètres

Bonjour Chris,

Merci de nous rejoindre et de m'avoir répondu. En ouvrant ton fichier, dans l'onglet paramètre la valeur de la cellule A2, n'est pas variable. Donc la fonctionnalité d’identification automatique du dossier ne fonctionne pas.

Si je la remplace par : =GAUCHE(CELLULE("filename";A1);TROUVE("[";CELLULE("filename";A1))-2), ça fonctionne.

En revanche, quand j'essaie de reconstituer le fichier de tout pièce, je n'y arrive pas. Peux-tu me dire quelles sont les premières étapes ? Je tente après avoir créer un nouveau fichier excel :

  • 1 - Ecriture en cellule A2 de la feuille 1 de la formule écrite plus haut. J'obtiens le nom du répertoire.
  • 2 - Ensuite j'ouvre PowerQuery
    3 - Je créer une nouvelle requete en écrivant la formule :
    = Excel.CurrentWorkbook(){[Name="Répertoire"]}[Content][Column1]{0}

    C'est ici que ça bloque... J'ai le message d'erreur suivant :

Je débute en PowerQuery et n'ai pas tout a fait saisi la logique de fonctionnement de l'outil.

Merci d'avance pour ton aide

Batoine

RE

La formule part du principe que c'est le répertoire courant

Comme je n'ai pas fait la synthèse dans le même dossier que les CSV, j'ai mis une valeur en dur qui est correctement exploitée par les requêtes si on la change...

Concernant ton souci : la cellule contenant le répertoire, quel que soit son contenu, doit être nommée dans Excel

Tu la sélectionnes et Formules, Définir un nom : et tu tapes Répertoire

Bonsoir Chris, Jean-Eric,

@Chris, merci beaucoup ! J'ai finalement réussi. J'avais le mauvais réflexe de renommer directement avec le menu déroulant en haut à gauche, ce qui semblait causé problême.

@Jean-Eric : votre solution ne marche pas chez moi, ma version d'excel ne me permet pas de reconnaitre le FileFolder comme un text. Je pensais pourtant avoir la dernière version d'Excel, mais j'ai celle d'aout (Version 1908).

Voici finalement et pour partage aux futurs lecteurs mon fichier final. J'ai finalement opté de passer par une autre manière de définition de l'ID avec pour contrainte de pouvoir utiliser ce fichier avec d'autres typologies de données (à condition que les csv ai le même format)

Bonne soirée et merci !

Bonjour,

Ces différences de version d'Excel 365, suivant le canal des mises à jour retenu, deviennent pénibles.

Mon laptop est HS et j'attends un noubeau SSD. Ma version était, je crois, 2002.

Je travaille depuis le début de la semaine avec Excel 2019.

Là encore, les différences sont notables. Y-compris pour Power Query (liste des fonctions et auto complétion par exemple).

Bonne continuation.

Cordialement.

Bonjour

Oui comme les mises à jour Windows 10 ...

J'ai un 365 perso avec version 2002 et un 365 pro qui se met moins souvent à jour et je constate aussi des différences...

L'add on date, donc là c'est plus normal

2019 n'est pas mis à jour je crois...

Bonjour

@Jean_Eric

J'espère que tu as trouvé une solution pour ton PC

Je reviens vers toi à propos du répertoire

SI j'ouvre le ficher dans 365 j'ai le même problème que sur l'add on : l'utilisation de =FolderFiles(Répertoire)

donne un message d'erreur "Formula .FireFall : requête "Consolidation" (étape "Source") référence d'autres requêtes ou étapes...."

As-tu un paramétrage particulier de ton PowerQuery qui évite cela sur ton PC ?

Merci

Bonjour

@78chris,

Bonjour,

Pour le souci de mon laptop, c'est réglé (je crois).

Depuis la mise de novembre 2019 de Windows 10, j'avais droit aux BSOD, sans raisons apparentes, comme à l'époque de Windows 95-98 !

Plusieurs réinstallations (avec des diagnostics de ssd satisfaisants) et mêmes soucis.

En dernier carat, j'ai comme même acquéri un nouveau ssd (Crucial MX 500Go ald 128Go pour 75 EUR ).

Mon Lenovo X1 Carbon de 2014 est tout neuf (et même plus fluide, plus rapide, etc...).

Et je fais attention aux mises à jour Qualité de *erd* de Windows....

Sinon, je te mets ci-dessous ma config. Power Query.

1 options de requete 2 editeur power query 3 securite 4 confidentialite 6 diagnostics

En complément regarde si Toujours autorisé est activé.

Je l'ai activé il y a quelques temps après lecture d'un sujet (mais lequel et quel site ?).

7 toujours autorise

Sinon, de quel fichier parle-t'on ?

Cdlt.

Nota :

J'ai oublié un point.

Dans Paramètres de la source de données, Source des données dans le classeur actif, Modifier les autorisations.

Vérifie le niveau de confidentialité !?.

Re

Merci

C'est dans les paramètres généraux de confidentialité : j'avais le niveau intermédiaire.

Je vais pouvoir simplifier une solution que j'ai concoctée...

C'est bien que tu aies pu remettre ton portable sur les rails

J'avais un vieux portable de 2008 avec un processeur pas mauvais.

Un SDD lui avait donné une 2ème jeunesse.

Il était partitionné en 3 (2 W7 et un W10)

Mais la canicule de l'été dernier a eu raison de lui : les soudures entre la CM et la puce graphique n'ont pas résisté

Les MAJ de W10 sont une cata : mes copains appellent tout le temps car à chaque mise à jour quasiment ils perdent de vue leur imprimante...

Rechercher des sujets similaires à "powerquery compiler fichiers csv"