XL 2019 Simplification tableau

  • Initiateur de la discussion Initiateur de la discussion sum01
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

sum01

XLDnaute Occasionnel
Bonjour à tous,

Dans un soucis de simplification, je cherche à modifier un tableau source sur lequel je n'ai pas la main pour le rendre un peu plus "léger" en terme de lecture.

A gauche, le tableau source mais je souhaiterais l'alléger afin que certaines données à double n'apparaissent pas comme le tableau de droite. Les entrées sont dynamiques c'est-à-dire que dans un mois à l'autre le nombre d'entrées varie. Je n'utilise pas un tableau croisé dynamique car l'apparence de ce type de tableau ne convient pas au standard de reporting, etc... et je ne suis pas très familier pour l'utilisation des formules dans les tableaux croisés dynamiques.

Merci beaucoup pour votre aide
Bon week-end
 

Pièces jointes

Bonjour

dans ton fichier, je ne vois pas où est la "simplification"...
tu as juste effacé des cellules dont le contenu ne change pas d'une ligne sur l'autre.. mais.. juste pour les colonnes des champs A B et C.. et pourquoi pas sur les champs D E F.??
et au dela de ca.. je ne vois pas ce qu'il y a à simplifier..
 
Bonjour

dans ton fichier, je ne vois pas où est la "simplification"...
tu as juste effacé des cellules dont le contenu ne change pas d'une ligne sur l'autre.. mais.. juste pour les colonnes des champs A B et C.. et pourquoi pas sur les champs D E F.??
et au dela de ca.. je ne vois pas ce qu'il y a à simplifier..

Bonjour,

Oui en effet j'ai supprimé les données appartenant au même groupe estimant que ce n'est pas nécessaire de répéter la même chose dans chaque ligne. Je peux ensuite étendre à d'autre colonne naturellement. Les tableaux croisés dynamiques présentent les données de cette manière si me trompe pas. (un peu près). J'aurais naturellement utilisé le TCD pour satisfaire ce besoin mais sa présentation ne convient pas au powerpoint/ reporting. C'est pour ce cela que j'essaie de passer par une formule combinant IF, DECALER, etc... mais pour le moment je ne parviens à aucun résultat probant.
 
Bonsoir,
Une autre solution power query, qui "efface" les données identiques successives sur les 3 premières colonnes
si on veut élargir à 4, il suffira de changer le 3 par 4 dans le code

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="t_base"]}[Content],
    GroupBy = Table.Combine(Table.Group(Source, List.FirstN(Table.ColumnNames(Source),3), {{"Tbl", each Table.AddIndexColumn(_,"Idx",1) }})[Tbl]),
    Final = Table.RemoveColumns(Table.ReplaceValue(GroupBy,each [Idx] > 1, each null, (x,y,z)=> if y then z else x, List.FirstN(Table.ColumnNames(GroupBy),3)),"Idx")
in
    Final
Bonsoir Jeannette,

Merci pour votre réponse qui fonctionne superbement bien ! C'est génial et encore mieux. Et si on essaie d'aller encore un peu plus loin en introduisant un champ calculé, comme dans mon petit fichier. Au lieu des totaux par lignes (champ N), peut-on afficher des sous-totaux par groupe de données (champ O) ?
 
Bonsoir Jeannette,

Merci pour votre réponse qui fonctionne superbement bien ! C'est génial et encore mieux. Et si on essaie d'aller encore un peu plus loin en introduisant un champ calculé, comme dans mon petit fichier. Au lieu des totaux par lignes (champ N), peut-on afficher des sous-totaux par groupe de données (champ O) ?
 

Pièces jointes

Bonjour à tous, bonjour Jeannette,

Autre proposition, plus longue que celle de Jeannette... (c'est récurrent apparemment 🙂 )

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="t_base"]}[Content],
    cols = Table.ColumnNames(Source),
    GroupBy = Table.Group(Source, List.FirstN(cols,3), {{"Tbl", each
              let x = Table.Sort(_, {cols{4}, Order.Ascending})
              in Table.AddColumn(x, "Total", each
                let y = Record.Field(_, cols{4})
                in List.Sum(Table.Column(Table.SelectRows(Table.SelectColumns(x, {cols{4}, cols{5}}),
                each Record.Field(_, cols{4}) = y), cols{5})))}})[Tbl],
    Result = Table.Combine(List.Transform(GroupBy, each Table.FromColumns(List.Accumulate(Table.ColumnNames(_), {},
             (s,c)=> s & {List.Accumulate(Table.Column(_,c), {},
             (s,c)=> s & {if List.Contains(s,c) then null else c})}),
             cols & {"Total"})))
in
    Result

Bonne journée
 
Bonjour,
Si j'ai bien compris le besoin...
Cependant, il faudra intervenir dans le code pour bien écrire l'en-tête du "Champ F"
Pour ce faire, il faut ouvrir l'éditeur avancé de power query (Alt + F12), cliquer sur "Éditeur avancé", et remplacer "Champ F" par le véritable titre de la colonne dans cette ligne :
PowerQuery:
 {"Total", each List.Sum([Champ F]), type number}}),
Si le titre comprend des caractères spéciaux, il faut l'englober dans des guillemets précédés du #
PowerQuery:
[#"Véritable titre de la colonneF"]
Bonjour Jeannette,

Le tableau affiche clairement le résultat attendu. J'ai bien les sous-totaux par catégories. Merci beaucoup pour votre précieuse aide. Je profite également pour remercier Alexga78 pour sa solution complémentaire.
Bon dimande à vous
Meilleures salutations
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
41
Retour