Power Query Power Query : chercher si une colonne existe et la renommer

Florent74

XLDnaute Nouveau
Bonjour à tous,

Petit problème de syntaxe dans Power Query : je souhiaiterais tester dans le code de ma requete si l'entête d'une des colonnes de la table importée se nomme "Résultats" et si oui, la renommer en "RESULTATS".

J'arrive bien à créer une table contenant le nom de toutes les en-têtes de colonne avec la fonction Table.ColumnNames mais je ne sais pas comment écrire la condition de test ni comment renommer la colonne ensuite.

Est-ce que vous auriez une solution ?

Merci beaucoup !!
 
Solution
RE

Fais précéder la ligne d'un nom si tu passe par l'éditeur : par exemple
#"Colonnes renommées" =

Sinon depuis l'interface : cliquer sur le Fx de la barre de formule et taper la commande.
PQ nommera l'étape automatiquement.

J'avais répondu mais posté :rolleyes:

Florent74

XLDnaute Nouveau
Bonjour,

Merci beaucoup pour la réponse !! Par contre, je n'arrive pas à l'intégrer dans le code général de la reqûête sans générer d'erreur. J'ai encore du mal à comprendre le langage M. Voici le code en entier dans la pièce jointe.

Merci beaucoup pour votre réactivité !!
 

Pièces jointes

  • Code requete analyse et détails.txt
    3.9 KB · Affichages: 7

Florent74

XLDnaute Nouveau
Bonjour,

C'est bon, j'ai pu intégrer la condition dans ma commande :
ModifNomColonne = if List.Count(List.Select(Table.ColumnNames(#"En-têtes promus"), each _=Text.Contains(#"En-têtes promus", "Résultats")))=1 then Table.RenameColumns(#"En-têtes promus",{{"Résultats", "RESULTATS"}}) else #"En-têtes promus"

J'ai une demande complémentaire : comment intégrer dans cette instruction le fait de vérifier si chaque entête contient le mot "Résultats" et le transformer en "RESULTATS". Je n'arrive pas à placer correctement l'instruction Text.Contains.

Merci beaucoup !!
 

alexga78

XLDnaute Occasionnel
Bonjour Florent74, le forum,

un fichier serait bien plus parlant car perso je navigue dans le brouillard, certes c'est l'époque...

PowerQuery:
= Table.FromRows(Table.ToRows(#"En-têtes promus"), List.ReplaceMatchingItems(Table.ColumnNames(#"En-têtes promus"), {{"Résultats","RESULTATS"}}))

Cordialement
 

chris

XLDnaute Barbatruc
RE

Fais précéder la ligne d'un nom si tu passe par l'éditeur : par exemple
#"Colonnes renommées" =

Sinon depuis l'interface : cliquer sur le Fx de la barre de formule et taper la commande.
PQ nommera l'étape automatiquement.

J'avais répondu mais posté :rolleyes:
 

Florent74

XLDnaute Nouveau
A ce propos, je souhaiterais compléter ma question initiale pour faire progresser ma requête. Chris, mromain et Jurassik Pork m'ont déjà bien aidé pour mon problème de base mais je patauge dans le code M...

Mon projet initial est de pouvoir intégrer sous Excel via Power Query des résultats d'analyses d'eau qui me parviennent au format PDF et qui possèdent deux types de structures selon les deux laboratoires avec lesquels je travaille (en l’occurrence Savoie-Labo et LIDAL). Les résultats me sont transmis sous la forme d'un fichier pdf, contenant plusieurs résultats d'analyse, possiblement des deux laboratoires. Chaque résultats d'analyse comporte un nombre variable de pages (de 1 à x pages).

J'ai créer un fichier Excel avec un onglet "PARAM" dans lequel je renseigne le chemin complet du pdf à traiter (cellule ChPDFCplt) et le numero de l'analyse dont il faut extraire les données (cellule NumIdAnalyse). Ensuite deux requetes Power Query, gracieusement élaborées par les contributeurs de ce site, traitent les PDF !!

La première requête "Qry_ExtractAnalyses" du fichier Excel permet d'identifier le nombre d'analyses, la provenance (quel labo), le nombre de pages par analyses et la description de l'analyse (identifiant unique, date de prélèvement, commune). Elle produit le tableau de l'onglet TT_ANA et fonctionne très bien !!

La seconde requête "Qry_DetailAnalyse" extrait, pour chaque numéro d'analyse que l'on renseigne dans la cellule NumIdAnalyse de l'onglet PARAM, le tableau des résultats de l'analyse (onglet TT_RESUL). En fonction du laboratoire, la structure de la table contenant les résultats n'est pas tout à fait identique. Je voudrais compléter cette requête pour nettoyer correctement les tableaux avant traitement en vba et intégration dans une base Access :
- supprimer les colonnes inutiles : pour les analyses du laboratoire Savoie-Labo, supprimer les colonnes intitulées "Column3", "Column4", pour les analyses LIDAL, supprimer la colonne "Column2". J'ai essayer avec une fonction if en cherchant une colonne possédant l'un ou l'autre des ces noms d'entete, mais cela ne fonctionne pas....
- pour les analyses Savoie-Labo : fusionner la "Column6" avec la colonne "Unités". La requête sépare les unités de mesure dans la Column6 et dans la colonne "Unités". Je souhaiterais ne conserver qu'une colonne.

Si vous avez des pistes de réflexion, c'est avec plaisir !!!

Merci beaucoup !!
 

Pièces jointes

  • ExempleAnalyses.pdf
    456.5 KB · Affichages: 3
  • GESTION PDF ANALYSES - Exemple.xlsm
    45.8 KB · Affichages: 1

Discussions similaires

Réponses
14
Affichages
399
Réponses
16
Affichages
987

Statistiques des forums

Discussions
315 059
Messages
2 115 805
Membres
112 587
dernier inscrit
Zimprog