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

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 !

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é 🙄
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 !!
 
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
 
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é 🙄
 
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

- 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

  • Question Question
Power Query Power Query
Réponses
26
Affichages
413
  • Question Question
Réponses
16
Affichages
1 K
Réponses
0
Affichages
727
Retour