Accueil – Le CFO masqué › Forums › Power Query › Déplacement colonne par numéro
Mots-clés : Déplacement colonnes Par numéro
- This topic has 4 réponses, 3 participants, and was last updated il y a 4 years et 7 months by philippe.muniesa.
-
AuteurArticles
-
29 avril 2020 à 19 h 39 min #64020philippe.muniesaParticipant
Bonsoir,
Je n’ai pas trouvé dans la doc MS.
Y a t’il un moyen de demander à PowerQuery de déplacer la colonne 5 en colonne 2, les autres colonnes ne changeant pas de place.Merci
PH Muniesa
30 avril 2020 à 7 h 57 min #64026Kim LeblancParticipantBonjour,
Si je comprends bien votre question, vous ne voulez pas que tous les noms de colonnes soit listés dans la fonction Table.ReorderColumns?
Vous pourriez utiliser un List.ReorderColumns et y spécifier l’ordre de vos 2 premières colonnes soit la column1 et la column5, ensuite vous ajouté la fonction List.RemoveItems avec Table.ColumnNames en premier paramètre (pour prendre toutes les colonnes existantes dans l’étape précédente) puis dans les paramètres suivants inscrire les colonnes déjà listées dans le Table.ReorderColumns (pour listé toutes les autres colonnes).
= Table.ReorderColumns(#”étapeprécédente”,{“Column1”, “Column5″} & List.RemoveItems(Table.ColumnNames(#”étapeprécédente”),{“Column1”, “Column5”}))
Si ce n’est pas ce que vous souhaitez faire, pouvez-vous nous donner un exemple concret?
AU plaisir,
Kim
1 mai 2020 à 9 h 59 min #64083philippe.muniesaParticipantMerci,
Je vais essayer votre solution, mais j’imaginais une solution où l’on ne fait pas référence aux noms des colonnes, mais à leur rang dans la liste des colonnes
Tout simplement en indiquant Table.DeplaceColumns(5,1) ou quelque chose de similaire.(malheureusement cette instruction ne semble pas exister).
Ce qui m ennuie avec table.Reorder, c’est qu’il faut lister tous les noms des colonnes présentes dans la table.
Cordialement
Philippe Muniesa
3 mai 2020 à 3 h 39 min #64115Stéphane LorinParticipantBonjour Philippe
Vous pouvez obtenir le nom de votre colonne 1 par la formule Table.ColumnNames(#”étapeprécédente”){0}
et de votre colonne 5 par Table.ColumnNames(#”étapeprécédente”){4}
En effet, Table.ColumnNames renvoie une liste et la première valeur de cette liste est obtenue par le {0} et la cinquième par {4}
Vous remplacez donc “Column1” et “Column5” de la formule de Kim par les formules ci-dessus.En partant de l’étape “Source” cela donne :
= Table.ReorderColumns(Source,{Table.ColumnNames(Source){4},Table.ColumnNames(Source){0}} & List.RemoveItems(Table.ColumnNames(Source), {Table.ColumnNames(Source){4}, Table.ColumnNames(Source){0}}))Autre possibilité, vous rétrogradez les en-têtes en première ligne (Table.DemoteHeaders), les colonnes d’appellent maintenant Column1 … vous appliquez la formule de Kim et vous n’avez plus qu’à remonter la première ligne en en-tête (Table.PromoteHeaders).
Stéphane
5 mai 2020 à 10 h 43 min #64240philippe.muniesaParticipantStéphane,
Merci pour Ces techniques qui permettent de s’affranchir des noms de colonne, et des casses tête que ça pose quand le nombre de colonnes ou leur nom est modifié dans une procédure.
Cordialement
Philippe Muniesa
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.