PowerQuery : créer une fonction qui renomme les colonnes à partir d’une table

Accueil – Le CFO masqué Forums Power Query PowerQuery : créer une fonction qui renomme les colonnes à partir d’une table

4 sujets de 1 à 4 (sur un total de 4)
  • Auteur
    Articles
  • #82314
    Audrey
    Participant

    Bonjour,

    Dans PowerQuery, j’ai chargé une table source qui contient un très très grand nombre de colonnes. Je dois renommer chacune d’entre elle.

    Plutôt que de renseigner un nombre énorme d’arguments dans la commande Table.RenameColumns, je voudrais créer une fonction personnalisée qui ferait le travail à ma place en s’appuyant sur une table de correspondance.

    Nom de ma table de correspondance : FindReplaceNomColonnes
    – nom de la colonne 1: FIND –> elle contient la liste des noms de colonnes actuelles
    – nom de la colonne 2: REPLACE –> elle contient la liste des noms de colonnes cibles

    Nom de ma fonction personnalisée : FonctionRenommeColonne
    – argument 1: ma table source TableSource
    – argument 2: ma table de correspondance FindReplaceNomColonnes
    – fonctionnement :
    – pour chaque colonne de ma TableSource, la fonction recherche le nom dans la colonne FIND de la table de correspondance FindReplaceNomColonnes
    – si elle trouve le nom dans la colonne FIND, elle renomme la colonne avec la valeur contenue dans la colonne REPLACE, grâce à la commande Table.RenameColumns
    – si elle ne trouve pas le nom dans la colonne FIND, elle ne fait rien et passe à la valeur suivante jusqu’à avoir traité l’ensemble des colonnes

    Le problème, c’est que mes cours de programmation remontent à plus de 20 ans et je ne sais pas comment m’y prendre…

    D’avance merci pour votre aide.

    Audrey.

    #82340
    Kim Leblanc
    Participant

    Bonjour,

    Petite suggestion, au lieu de créer une fonction, vous pourriez transposer votre table pour mettre vos en-têtes dans la première colonne que l’on pourrait nommer ici AncienNom puis fusionner avec votre table de référence où la colonne commune serait AncienNom et la colonne FIND de votre table de référence.

    Vous pourriez ensuite vous créer une colonne conditionnelle pour aller chercher la colonne FIND si la colonne FIND est non null sinon aller chercher la colonne AncienNom. Nommer cette nouvelle colonne exemple NouveauNom puis supprimer AncienNom et FIND.

    Transposer de nouveau. Pour remettre vos en-tête en colonne.

    #82355
    Audrey
    Participant

    Merci pour cette idée! J’aime beaucoup! Je vais tenter cela, je vous tiens au courant 🙂

    Audrey

    #82369
    Audrey
    Participant

    En effet, je voulais vraiment me compliquer la vie pour pas grand-chose, tout ça parce que je ne connaissais pas le bouton “Ajouter des requêtes”.

    J’ai créé une table de correspondance de deux lignes:
    – la première (entête) avec les anciens titres
    – la seconde avec tous les nouveaux titres

    Dans ma table source
    – j’ai cliqué sur “Ajouter une requête” afin de combiner ma table source avec ma table de correspondance.
    – j’ai trié les données de sorte à ce que la ligne issue de la table de correspondance se trouve en première ligne de la table source.
    – puis j’ai cliqué sur Transformer –> utiliser la première ligne pour les entêtes.

    Et voilà!

    Merci vraiment pour m’avoir soufflé l’idée.

    Audrey

4 sujets de 1 à 4 (sur un total de 4)
  • Vous devez être connecté pour répondre à ce sujet.