Power Query PQ_Cumul durée et modification type sur nombre inconnu de colonnes

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 !

Cousinhub

XLDnaute Barbatruc
Bonjour,
Grâce à @Hasco , j'ai réussi à additionner des "durées" de travail de personnels en fonction des clients. Maintenant, le nombre de clients pouvant évoluer, je désirerais :
- Modifier le type de toutes les colonnes (sauf la 1ère) en "duration" (fait dans la requête jointe, mais en manuel)
- Ajouter une colonne "Total" par personne tout à droite (pour le total par client, pas de soucis, il suffit d'insérer le total des lignes dans la requête chargée)
Vous remerciant par avance.
Bonne journée et bon W-E
 

Pièces jointes

Solution
Bonjour bhbh, le forum,

Tu peux essayer ce code :
Code:
let
    Source = Excel.CurrentWorkbook(){[Name="T_Data"]}[Content],
    ModType = Table.TransformColumnTypes(Source, List.Transform(List.RemoveFirstN(Table.ColumnNames(Source),1), each {_, type duration})),
    AjoutColonneTotal = Table.AddColumn(ModType, "Total", each List.Sum(List.RemoveFirstN(Record.ToList(_), 1)), type duration)
in
    AjoutColonneTotal
A+
Bonjour bhbh, le forum,

Tu peux essayer ce code :
Code:
let
    Source = Excel.CurrentWorkbook(){[Name="T_Data"]}[Content],
    ModType = Table.TransformColumnTypes(Source, List.Transform(List.RemoveFirstN(Table.ColumnNames(Source),1), each {_, type duration})),
    AjoutColonneTotal = Table.AddColumn(ModType, "Total", each List.Sum(List.RemoveFirstN(Record.ToList(_), 1)), type duration)
in
    AjoutColonneTotal
A+
 
Bonjour mromain,
Et merci pour ce code qui fonctionne parfaitement.
Il est bizarre que l'éditeur ne propose pas l'addition des colonnes typées "duration" dans le ruban "Ajouter une colonne", alors que List.Sum permet de le faire...
Le principal, c'est que cela fonctionne, et c'est le cas
Merci encore
 
Hello @bhbh

Pour le changement de type :
= Table.TransformColumnTypes(Source ,let Colonnes = List.Skip(Table.ColumnNames(Source),1) in List.Zip({Colonnes,List.Transform(Colonnes,each Duration.Type)}))

Et pour la colonne Total de la ligne :
= Table.AddColumn(ModType, "Total", each List.Sum(List.Skip(Record.FieldValues(_),1)),type duration)

Et voilà 🙂

[Edition] vu le temps écoulé entre nos messages, je me demande pourquoi je n'ai pas vu vos derniers, lorsque j'ai ouvert ce fil la première fois ?! Etrange... [/Edition]
 

Pièces jointes

Dernière édition:
Bonjour @mromain

Je ne connais aucune différence entre les deux. Dans le petit monde des développeurs MS il court l'idée que deux développeurs auraient pondu l'une et l'autre sans savoir ce que leur confrère faisait. Faut-il s'y fier ????

Personnellement j'utilise de préférence Record.FieldValues parce que son nom est explicite. Qu'avec Record.ToList on ne sait à quoi s'attendre. Un nom sonne comme une propriété l'autre comme une méthode.

Cordialement
 
Dernière édition:
Bonsoir à tous,

Une autre proposition Power query pour le fun,

VB:
let
    Source = Excel.CurrentWorkbook(){[Name="T_Data"]}[Content],
    #"Type modifié" = Table.TransformColumns(Source,{{"Personnel", Text.From}}, Duration.From),
    Total = Table.AddColumn(#"Type modifié", "Total", each List.Sum(List.Range(Record.ToList(_),1)), type duration)
in
    Total

Sinon, effectivement je ne vois pas de différence non plus entre Record.FielValue et Record.ToList
Ces 2 fonctions sont très similaires.

Cordialement
 

Pièces jointes

Dernière édition:
- 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
5
Affichages
2 K
Retour