Copie données verticales en horizontales automatiquement

Salut à tous!

Voici mon problème, j'ai une liste de pièces en colonne A suivi en colonne B leurs emplacements.

Dans la colonne A je peux avoir la même référence mais en B un emplacement différent.

Je souhaite, au lieu d'avoir ces emplacements verticalement, les avoir à l'horizontal.

Je n'ai trouvé en utilisant le TCD et je ne sais pas le faire automatiquement.

Je joint un fichier si ça peut vous aider.

Merci d'avance pour votre aide, et désolé du "noobism"

A+

Fred

Bonjour Okayfred, le forum.

Ton fichier en retour, avec une macro feuil3 qui réalise ce que tu souhaites.

Elle n'est pas de moi, je l'ai sûrement glané sur le Forum, et je l'ai adapté pour ta demande.

Vois et dis-nous si cela répond à ta demande.

Bon dimanche.

Cordia5

Salut Cordia5, je regarde ça et te fais un retour!

Un grand merci en tout cas d'avoir pris le temps pour m'aider!!

Merci

Fred

Bonjour,

Une réponse.

Et maintenant, que fait-on ?

Cdlt.

Nota : pas vu la proposition de Cordias5 en VBA

Bonjour à tous,

Une variante en VBA, qui met à jour la feuille 2 à chaque activation de celle-ci.

Bonjour Okayfred, le forum.

Ton fichier en retour, avec une macro feuil3 qui réalise ce que tu souhaites.

Elle n'est pas de moi, je l'ai sûrement glané sur le Forum, et je l'ai adapté pour ta demande.

Cordia5 Loc rangement horizontal.xlsm

Vois et dis-nous si cela répond à ta demande.

Bon dimanche.

Cordia5

Cordia5 super ça fonctionne parfaitement!!

Super sympa en tout cas, j’apprécie!

A+

Fred

Bonjour,

Une réponse.

Et maintenant, que fait-on ?

Cdlt.

essai Loc rangement horizontal.xlsx

Nota : pas vu la proposition de Cordias5 en VBA

Jean Eric, je crois que ma réponse n'est pas partie, alors un grand merci pour ton aide à toi aussi, c'est exactement ce que je souhaite faire! Par contre je n'ai pas trouvé comment tu as fait?

Merci encore!

Fred

Bonjour à tous,

Une variante en VBA, qui met à jour la feuille 2 à chaque activation de celle-ci.

Au top également, ça fait vraiment plaisir de voir une telle communauté aussi active mais surtout experte!

Merci beaucoup, bon je dois avouer, je ne suis pas très expert en VBA mais je commence à comprendre avec les exemples que vous m'avez envoyé!

Merci U.Milité pour le coup de main!

A+

Fred

Bonjour,

Une réponse.

Et maintenant, que fait-on ?

Cdlt.

essai Loc rangement horizontal.xlsx

Nota : pas vu la proposition de Cordias5 en VBA

Jean Eric, je crois que ma réponse n'est pas partie, alors un grand merci pour ton aide à toi aussi, c'est exactement ce que je souhaite faire! Par contre je n'ai pas trouvé comment tu as fait?

Merci encore!

Fred

Jean Eric, c'est bon je viens de trouver, la puissance de l'éditeur de requête!!! Merci également, vous êtes au top!

Fred

Bonjour à Tous,

Question pour Jean-Eric,

je tente désespérement de refaire la manip en utilisant Query, hors je suis bloqué pour passer de l'étape 7 à 8.

C'est-à-dire passer de PivotedColumn à Custom1.

Je ne vois pas du tout comment faire apparaître le menu Outils liste - Transformer.

Si tu pouvais m'éclairer, je pourrai finir l'année sans me torturer l'esprit.

Merci, bonne fêtes de fin d'année à Tous.

Cordia5

Bonjour,

@Cordias,

TableColumnNames(PivotedColumn) a été saisi manuellement.

On ne peut pas utiliser une fonctionnalité du ruban, pour créer la liste des en-têtes de lignes.

Après PivotedColumn, cliquer sur fx (à gauche de la barre de formule) et saisit la fonction.

Est-ce plus clair ?

Sinon, s'il n'y a pas de roue dentée à une étape, tu peux supposer, que l'étape n'est pas construite avec les fonctionnalités du ruban

(j'espère ne pas écrire une connerie).

Cdlt.

Bonsoir,

merci Jean-Eric de ta réponse, malheureusement, même en saisissant dans l'éditeur, je n' y arrive toujours pas.

Pourtant je suis bien arrivé à l'étape 7.

let

Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

#"Lignes groupées" = Table.Group(Source, {"CATID"}, {{"Nombre", each _, type table [CATID=text, LOCATION=text]}}),

#"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "Personnalisé", each Table.AddIndexColumn([Nombre],"Index",1,1)),

#"Colonnes supprimées" = Table.RemoveColumns(#"Personnalisée ajoutée",{"Nombre"}),

#"Personnalisé développé" = Table.ExpandTableColumn(#"Colonnes supprimées", "Personnalisé", {"LOCATION", "Index"}, {"Personnalisé.LOCATION", "Personnalisé.Index"}),

#"Lignes triées" = Table.Sort(#"Personnalisé développé",{{"CATID", Order.Ascending}, {"Personnalisé.LOCATION", Order.Ascending}}),

#"Colonne dynamique" = Table.Pivot(Table.TransformColumnTypes(#"Lignes triées", {{"Personnalisé.Index", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(#"Lignes triées", {{"Personnalisé.Index", type text}}, "fr-FR")[Personnalisé.Index]), "Personnalisé.Index", "Personnalisé.LOCATION")

Custom1 = Table.ColumnNames(Colonne dynamique),

in

#"Colonne dynamique"

J'essais encore et encore, .....

Merci

Mon étape 7 :

#"Colonne dynamique" = Table.Pivot(Table.TransformColumnTypes(#"Lignes triées", {{"Personnalisé.Index", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(#"Lignes triées", {{"Personnalisé.Index", type text}}, "fr-FR")[Personnalisé.Index]), "Personnalisé.Index", "Personnalisé.LOCATION")

Bonjour,

Essaie ainsi :

Custom1 = Table.ColumnNames(#"Colonne dynamique"),

Bonjour Jean-Eric,

Merci beaucoup pour ta réponse.

J'ai bien tenté, mais rien.

Par contre j'ai réussi à obtenir la même chose que toi mais sans les étapes 8.9.10.

En fait, j'ai fusionné avec Espace, puis Renommer la colonne Location, puis fractionner la même colonne selon les espaces.

Donc, je me demande pour quelles raisons tu avais incrémenté ces 3 étapes ?, et comment tu affiches ce ruban Transformer ?

Je continue, et je finirai par trouver, ..... enfn je l'espère.

Cordia5

Bonjour,

@Cordia5,

J'ai revu ma copie avec tes remarques.

Pour info, la fusion des colonnes avec espace avec le ruban puis un split, donnent quelques fois des résultats inattendus, pour peu que le nombre de colonnes soit variable.

C'est pourquoi, on recherche des solutions viables pour ces cas précis.

Il y avait une coquille chez moi (et chez toi aussi à corriger !... ).

J'ai revu ma copie.

Copie les données en fin de tableau, dans le tableau de données et actualise le tout….

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    GroupedRows = Table.Group(Source, {"CATID"}, {{"GroupedRows", each _, type table [CATID=text, LOCATION=text]}}),
    AddedCustom = Table.AddColumn(GroupedRows, "Custom", each Table.AddIndexColumn([GroupedRows],"Index",1,1)),
    RemovedColumns = Table.RemoveColumns(AddedCustom,{"GroupedRows"}),
    ExpandedCustom = Table.ExpandTableColumn(RemovedColumns, "Custom", {"LOCATION", "Index"}, {"LOCATION", "Index"}),
    SortedRows = Table.Sort(ExpandedCustom,{{"CATID", Order.Ascending}, {"LOCATION", Order.Ascending}}),   
    PivotedColumn = Table.Pivot(Table.TransformColumnTypes(SortedRows, {{"Index", type text}}), List.Distinct(Table.TransformColumnTypes(SortedRows, {{"Index", type text}})[Index]), "Index", "LOCATION"),
    n=Table.ColumnCount(PivotedColumn)-1,
    Custom1 = Table.ColumnNames(PivotedColumn),
    Custom2 = List.RemoveFirstN(Custom1),
    Custom3 = List.Transform(Custom2,each {_,type text}),
    Custom4 = Table.TransformColumnTypes(PivotedColumn,Custom3),
    Custom5 = Table.CombineColumns(Custom4,Custom2,Combiner.CombineTextByDelimiter(" ",QuoteStyle.None),"Location"),
    #"Split Column by Delimiter" = Table.SplitColumn(Custom5, "Location", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv),n)
in 
    #"Split Column by Delimiter"

Je vais maintenant profiter de ce réveillon.

Bonnes fêtes de fin d'année et avec un peu d'avance, mes meilleurs pour cette nouvelle année.

Cdlt.

Rechercher des sujets similaires à "copie donnees verticales horizontales automatiquement"