Bonjour à tous,
Après plusieurs recherches et essai, je voudrais transformer la base de données de gauche en celle de droite. Ceci en évitant le VBA si possible ?
(Les dates sont a titre indicatif)
Merci pour votre aide.
Bonjour à tous,
Après plusieurs recherches et essai, je voudrais transformer la base de données de gauche en celle de droite. Ceci en évitant le VBA si possible ?
(Les dates sont a titre indicatif)
Merci pour votre aide.
Bonjour
Faisable par PowerQuery intégré à Excel 2016. Il serait sans doute plus logique de mettre les date dans l'ordre dans le second tableau...
Cependant quel est l'objectif ? Ce type de représentation étant notamment inexploitable statistiquement ?
Re
Sur PowerQuery : il faut
- commencer par décroiser tes données afin de mettre une seule colonne de dates (http://www.excel-formations.fr/Trucs_astuces/PQ02.php)
- puis croiser (http://www.excel-formations.fr/Trucs_astuces/PQ03.php)
Si tu veux conserver tes titres comme sur ton tableau 2, il faudra avant l'étape de suppression des colonnes devenues inutiles, créer une colonne personnalisée pour obtenir ces titres et l'utiliser en lieu et place de la colonne Titres de l'exemple
Edit :Faire toutes les étapes dans PowerQuery et ne basculer dans Excel que le résultat final
Merci pour ta réponse, je vais l'essayé.
Entre temps, j'ai trouvé un lien Youtube qui décrit la manière de créer la table dont j'ai besoin grâce à power query. Il y a 2 étapes de groupement, mais je n'utilise que la 2ème.
Je mets également le source que j'ai utilisé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 let Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content], #"Type modifié" = Table.TransformColumnTypes(Source,{{"date_deb", type date}, {"date_fin", type date}}), #"Colonne fusionnée insérée" = Table.AddColumn(#"Type modifié", "Fusionné", each Text.Combine({Text.From([date_deb], "fr-FR"), Text.From([date_fin], "fr-FR")}, ";"), type text), #"Colonnes supprimées" = Table.RemoveColumns(#"Colonne fusionnée insérée",{"date_deb", "date_fin"}), #"Lignes triées" = Table.Sort(#"Colonnes supprimées",{{"Nom", Order.Ascending}}), #"Lignes groupées" = Table.Group(#"Lignes triées", {"Nom"}, {{"MaTable", each _, type table}}), #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées", "Personnalisé", each Table.Column([MaTable],"Fusionné")), #"Valeurs extraites" = Table.TransformColumns(#"Personnalisée ajoutée", {"Personnalisé", each Text.Combine(List.Transform(_, Text.From), ";"), type text}), #"Colonnes supprimées1" = Table.RemoveColumns(#"Valeurs extraites",{"MaTable"}), #"Fractionner la colonne par délimiteur" = Table.SplitColumn(#"Colonnes supprimées1", "Personnalisé", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Personnalisé.1", "Personnalisé.2", "Personnalisé.3", "Personnalisé.4", "Personnalisé.5", "Personnalisé.6"}), #"Type modifié1" = Table.TransformColumnTypes(#"Fractionner la colonne par délimiteur",{{"Personnalisé.1", type date}, {"Personnalisé.2", type date}, {"Personnalisé.3", type date}, {"Personnalisé.4", type date}, {"Personnalisé.5", type date}, {"Personnalisé.6", type date}}) in #"Type modifié1"
Re
C'est effectivement une autre solution.
Cependant si le nombre de dates est variable (pas forcément 6 ) la ligne 12 va soit planter soit ne pas agir sur toutes les dates.
Bonjour,
Tu as raison le nombre de dates est limité à 6, je vais passer à ta méthode. Merci encore.
Partager