Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 ColonneS devient ligneS

rapsch

XLDnaute Nouveau
Bonjour à tous,

Mon problème est que j'ai des données en colonnes qui sont inexploitables avec un TCD.

Je vous ai mis en pièce jointe le fichier correspondant avec :
- les données Source
- Résultat escompté.

Et évidemment, à chaque ajout de nom ou de mois, l'onglet résultat s'adapte.

Pour complexifier le tout, sans VBA !!
J'ai essayé avec Tableau et Power Querry, mais je bloque.

Un grand merci par avance pour le temps que accorderez à ma demande.

Bon weekend de Pâques à tous.
 

Pièces jointes

  • Source - Résultat.xlsx
    167.8 KB · Affichages: 17
Solution
Bonjour Raphaël, bienvenue sur XLD ,

Au marteau pilon!
Une méthode par formules et TCD (en attendant une proposition par Power Query simple et rapide d'un membre de XLD...)
  • on a transformé le tableau source en tableau structuré (nécessaire aussi pour Power Query) de nom "Tableau1"
  • on a ajouté une feuille "SourceBis" avec un tableau structuré "Tableau2"
  • dans Tableau2, on a inséré trois formules pour développer Tableau1 (veiller à ce que Tableau2 soit assez grand pour contenir toutes les données de tableau1 - les lignes vides ne sont pas gênantes)
  • le Tableau2 sert de source au TCD de la feuille "Résultat"
nota: pour ajouter un nouveau mois dans Tableau1 (tableau source), se placer dans la dernière...

mapomme

XLDnaute Barbatruc
Bonjour Raphaël, bienvenue sur XLD ,

Au marteau pilon!
Une méthode par formules et TCD (en attendant une proposition par Power Query simple et rapide d'un membre de XLD...)
  • on a transformé le tableau source en tableau structuré (nécessaire aussi pour Power Query) de nom "Tableau1"
  • on a ajouté une feuille "SourceBis" avec un tableau structuré "Tableau2"
  • dans Tableau2, on a inséré trois formules pour développer Tableau1 (veiller à ce que Tableau2 soit assez grand pour contenir toutes les données de tableau1 - les lignes vides ne sont pas gênantes)
  • le Tableau2 sert de source au TCD de la feuille "Résultat"
nota: pour ajouter un nouveau mois dans Tableau1 (tableau source), se placer dans la dernière colonne, cliquer-droit, choisir Insérer / colonne de tableau à droite.

Le TCD s'adapte automatiquement au changement de Tableau1 (ajout/suppression de ligne, de colonne ou modification de valeur). Cependant si le VBA n'est pas permis, tout comme pour Power Query, quand vous modifierez la source, il faudra actualiser le résultat. Pour le TCD, se placer dans le TCD et ensuite Menu Analyse du tableau dynamique / Actualiser
 

Pièces jointes

  • rapsch- Source - Résultat- v1.xlsx
    234.3 KB · Affichages: 12
Dernière édition:

rapsch

XLDnaute Nouveau
Merci à vous 3 pour la rapidité et la qualité des réponses.
@mapomme, j'ai compris la logique
(*) cf. l'astuce fameuse du TCD
@Staple1600 , je n'ai pas compris l'astuce avec 2 TCD
@R@chid, il va falloir que j'augmente mon niveau en Power Querry ...

Je vous joint la suite de ce que j'ai pu en faire par la suite.
Si vous avez d'autres solutions je suis preneur...
 

Pièces jointes

  • rapsch- Source - Résultat- v2.xlsx
    163.2 KB · Affichages: 10

Staple1600

XLDnaute Barbatruc
Re, Bonjour R@chid

=>rapsch
L'astuce c'était une perche tendue pour aller faire un petit tour dans les archives du forum


Mais avec la solution all-inclusive de R@chid, l'astuce perd de sa superbe et appartient au XXième siècle désormais

=>R@chid
Je suis arrivé au résultat escompté sans PQ
parce que pas assez OQP par PQ, je suis
parce le TCD et moi NRV jamais on est.
Cochez la case idoine
 
Dernière édition:

rapsch

XLDnaute Nouveau
Je garderai en mémoire les 3.
Concernant la méthode de R@chid, il faut que je la travaille, certaines étapes me sont incompréhensibles. Et pourtant il n'y en as pas beaucoup d'étapes...
 

Staple1600

XLDnaute Barbatruc
Re

Moi, je trouve les étapes de R@chid trés claires
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Supprimer le tableau croisé dynamique des autres colonnes" = Table.UnpivotOtherColumns(Source, {"Personnes"}, "Attribut", "Valeur"),
    #"Colonnes renommées" = Table.RenameColumns(#"Supprimer le tableau croisé dynamique des autres colonnes",{{"Attribut", "Mois"}}),
    #"Lignes groupées" = Table.Group(#"Colonnes renommées", {"Personnes", "Mois"}, {{"Nombre", each List.Sum([Valeur]), type number}}),
    #"Lignes groupées1" = Table.Group(#"Lignes groupées", {"Personnes"}, {{"TtesLignes", each _, type table [Personnes=text, Mois=text, Nombre=number]}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes groupées1", "Personnalisé", each Table.AddIndexColumn([TtesLignes],"Index",1,1)),
    #"Personnalisé développé" = Table.ExpandTableColumn(#"Personnalisée ajoutée", "Personnalisé", {"Mois", "Nombre", "Index"}, {"Mois", "Nombre", "Index"}),
    #"Colonne conditionnelle ajoutée" = Table.AddColumn(#"Personnalisé développé", "Personnalisé", each if [Index] = 1 then [Personnes] else null),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Colonne conditionnelle ajoutée",{"Personnalisé", "Mois", "Nombre"}),
    #"Colonnes renommées1" = Table.RenameColumns(#"Autres colonnes supprimées",{{"Personnalisé", "Personnes"}})
in
    #"Colonnes renommées1"
Et contrairement au VBA, PQ met du français dans sa prose (et tout seule comme une grande, grâce à sa pote la petite souris )
 

Discussions similaires

Réponses
5
Affichages
440
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…