Hello
Yes c'est tout a fait possible
let
Source = Csv.Document(File.Contents("C:\Users\NathD\Downloads\test-fec.txt"),[Delimiter=" ", Columns=18, Encoding=1252, QuoteStyle=QuoteStyle.None]),
Headers = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
//La fonction Table.AddColumn avec la syntaxe "[...]" permet de créer plusieurs colonnes dans la même opération plutôt que de créer trois étapes et ajouter une colonne par une colonne. A la fin de cette étape cette partie "[[EcritureDate],[Records]]" signifie que je ne garde que les champs EcritureDate et Records que je viens de créer
AddRecords = Table.AddColumn(Headers, "Records", each [
Compte = if Text.Length([CompAuxNum])>=1 then [CompAuxNum] else [CompteNum],
Libellé = if Text.Length([CompAuxNum])>=1 then "Compte " & [CompAuxNum] else [CompteLib],
Montant = Number.From([Debit]) - Number.From([Credit])
])[[EcritureDate],[Records]],
//Cette étape permet de récupérer en mode "Table" les différentes colonnes créées précédemment et cette partie "Record.FieldNames(Record.Combine(AddRecords[Records]))" permet de récupérer le nom des trois colonnes en dynamique. Si on ajoute un record dans l'étape précédente pour créer une 4ème colonne, et bien cette colonne sera récupérée automatiquement.
ExpandRecords = Table.ExpandRecordColumn(AddRecords, "Records", Record.FieldNames(Record.Combine(AddRecords[Records]))),
//Modification des valeurs du champ écriture date pour avoir le format "janvier", "février" etc. Date.From() convertit le texte en une date exploitable puis la fonction Date.ToText permet de convertir des dates dans le format désiré. Ici "MMMM" est le code pour le mois complet. Si j'avais mis "yyyy-MM" j'aurai eu un retour dans ce style "2024-01"
TransformDate = Table.TransformColumns(ExpandRecords , {"EcritureDate" , each Date.ToText(Date.From(_) , "MMMM")}),
//Plutôt explicite, permet de pivoter le champ de période en sommant la colonne montant
PivotSum = Table.Pivot(TransformDate, List.Distinct(TransformDate[EcritureDate]), "EcritureDate", "Montant", List.Sum),
//Pour convertir avec deux chiffres après la virgule, soit on fait la manipulation avec l'assistant qui va générer le code en dur. Cependant si la période de MAI est intégré la conversion ne sera pas faite car pas pris en compte au moment du développement.
La fonction ci-dessous permet la conversion avec les arrondis de manière dynamique
Arrondi = Table.TransformColumns(PivotSum, List.Transform(List.Skip(Table.ColumnNames(PivotSum),2) , (x) => { x, each Number.Round(_, 2), type number} ))
in
Arrondi
N'hésite pas si besoin et bonne soirée
@+