Home – Le CFO masqué › Forums › Power Query › Déplacement colonne par numéro
Tagged: Déplacement colonnes Par numéro
- This topic has 4 replies, 3 voices, and was last updated 4 years, 11 months ago by
philippe.muniesa.
-
AuthorPosts
-
29 April 2020 at 19 h 39 min #64020
philippe.muniesa
ParticipantBonsoir,
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 April 2020 at 7 h 57 min #64026Kim Leblanc
ParticipantBonjour,
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 May 2020 at 9 h 59 min #64083philippe.muniesa
ParticipantMerci,
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 May 2020 at 3 h 39 min #64115Stéphane Lorin
ParticipantBonjour 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 May 2020 at 10 h 43 min #64240philippe.muniesa
ParticipantSté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
-
AuthorPosts
- You must be logged in to reply to this topic.