Power Query Power Query

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 !

Brissou33

XLDnaute Nouveau
Hello,

J'ai un problème avec un fichier excel que j'ai extract en fichier CSV que j'ai ensuite importé sur Power Query.

Voilà, j'aimerai pouvoir changer le format de la colonne "Date" de texte à date cependant j'ai beaucoup de cellules Error, j'ai donc appliqué ce code dans Advanced Editor :

let
Source = Csv.Document(File.Contents("/Users/brice/Desktop/Report - Brice(20).csv"), [Delimiter = ",", Columns = 14, Encoding = 65001, QuoteStyle = QuoteStyle.None]),

// Étape 2 : Changer le type des colonnes en texte
#"Changed column type" = Table.TransformColumnTypes(Source, {{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}, {"Column12", type text}, {"Column13", type text}, {"Column14", type text}}),

// Étape 3 : Supprimer la première ligne (en-têtes)
#"Removed top rows" = Table.Skip(#"Changed column type", 1),

// Étape 4 : Promouvoir la première ligne comme en-têtes
#"Promoted headers" = Table.PromoteHeaders(#"Removed top rows", [PromoteAllScalars = true]),

// Étape 5 : Changer le type des colonnes spécifiques
#"Changed column type 1" = Table.TransformColumnTypes(#"Promoted headers", {{"Bttl", Int64.Type}, {"CASH", Int64.Type}, {"Unit Price", type number}, {"Total", Int64.Type}, {"VAT 7%", type number}, {"ยอดรวม", type number}}),

// Étape 6 : Renommer les colonnes
#"Renamed columns" = Table.RenameColumns(#"Changed column type 1", {{"วันที่", "Date"}, {"ชื่อสถานที่", "Location"}, {"ประเภทธุรกรรม", "Transaction"}, {"เลขที่ใบสั่งขาย", "Sales Order"}, {"เลขที่ใบขาย", "Bill Order"}, {"ชื่อลูกค้า/ผู้ขาย", "Customer"}, {"Bttl", "Quantity"}, {"ยอดรวม", "Included TVA"}}),

// Étape 7 : Filtrer les lignes où la colonne "Customer" n'est pas vide
#"Filtered rows" = Table.SelectRows(#"Renamed columns", each ([Customer] <> "")),

// Étape 8 : Supprimer les espaces dans la colonne "Date"
TrimmedText = Table.TransformColumns(#"Filtered rows", {{"Date", Text.Trim}}),

// Étape 9 : Supprimer les caractères non imprimables dans la colonne "Date"
CleanedText = Table.TransformColumns(TrimmedText, {{"Date", Text.Clean}}),

// Étape 10 : Remplacer les erreurs par null dans la colonne "Date"
ReplacedErrors = Table.ReplaceErrorValues(CleanedText, {{"Date", null}}),

// Étape 11 : Convertir la colonne "Date" en type date
ConvertedToDate = Table.TransformColumnTypes(ReplacedErrors, {{"Date", type date}})
in
ConvertedToDate


Malheureusement j'ai toujours des cellules Error.

pouvez-vous m'aider?
 
Hello,

J'ai un problème avec un fichier excel que j'ai extract en fichier CSV que j'ai ensuite importé sur Power Query.

Voilà, j'aimerai pouvoir changer le format de la colonne "Date" de texte à date cependant j'ai beaucoup de cellules Error, j'ai donc appliqué ce code dans Advanced Editor :

let
Source = Csv.Document(File.Contents("/Users/brice/Desktop/Report - Brice(20).csv"), [Delimiter = ",", Columns = 14, Encoding = 65001, QuoteStyle = QuoteStyle.None]),

// Étape 2 : Changer le type des colonnes en texte
#"Changed column type" = Table.TransformColumnTypes(Source, {{"Column1", type text}, {"Column2", type text}, {"Column3", type text}, {"Column4", type text}, {"Column5", type text}, {"Column6", type text}, {"Column7", type text}, {"Column8", type text}, {"Column9", type text}, {"Column10", type text}, {"Column11", type text}, {"Column12", type text}, {"Column13", type text}, {"Column14", type text}}),

// Étape 3 : Supprimer la première ligne (en-têtes)
#"Removed top rows" = Table.Skip(#"Changed column type", 1),

// Étape 4 : Promouvoir la première ligne comme en-têtes
#"Promoted headers" = Table.PromoteHeaders(#"Removed top rows", [PromoteAllScalars = true]),

// Étape 5 : Changer le type des colonnes spécifiques
#"Changed column type 1" = Table.TransformColumnTypes(#"Promoted headers", {{"Bttl", Int64.Type}, {"CASH", Int64.Type}, {"Unit Price", type number}, {"Total", Int64.Type}, {"VAT 7%", type number}, {"ยอดรวม", type number}}),

// Étape 6 : Renommer les colonnes
#"Renamed columns" = Table.RenameColumns(#"Changed column type 1", {{"วันที่", "Date"}, {"ชื่อสถานที่", "Location"}, {"ประเภทธุรกรรม", "Transaction"}, {"เลขที่ใบสั่งขาย", "Sales Order"}, {"เลขที่ใบขาย", "Bill Order"}, {"ชื่อลูกค้า/ผู้ขาย", "Customer"}, {"Bttl", "Quantity"}, {"ยอดรวม", "Included TVA"}}),

// Étape 7 : Filtrer les lignes où la colonne "Customer" n'est pas vide
#"Filtered rows" = Table.SelectRows(#"Renamed columns", each ([Customer] <> "")),

// Étape 8 : Supprimer les espaces dans la colonne "Date"
TrimmedText = Table.TransformColumns(#"Filtered rows", {{"Date", Text.Trim}}),

// Étape 9 : Supprimer les caractères non imprimables dans la colonne "Date"
CleanedText = Table.TransformColumns(TrimmedText, {{"Date", Text.Clean}}),

// Étape 10 : Remplacer les erreurs par null dans la colonne "Date"
ReplacedErrors = Table.ReplaceErrorValues(CleanedText, {{"Date", null}}),

// Étape 11 : Convertir la colonne "Date" en type date
ConvertedToDate = Table.TransformColumnTypes(ReplacedErrors, {{"Date", type date}})
in
ConvertedToDate


Malheureusement j'ai toujours des cellules Error.

pouvez-vous m'aider?
Bonjour,

pas facile sans un fichier exemple, mais tu as essayé de faire ton étape 11 avant la 10 ?
 
Bonjour

Sans la source csv ou ne peut voir le PB

A noter qu'il n'est pas nécessaire d'afficher le résultat dans un onglet si on doit l'exploiter par TCD
Bonjour,
Voici le fichier.
J'essaie de changer la colonne au format date car justement lorsque j'exploite les données en TCD, impossible de grouper les dates, j'aimerai pouvoir grouper par moi/trimestre/année.
Par contre je ne peux pas attaché le fichier CSV, je ne sais pas pourquoi...
 
Bonjour @Brissou33, le forum,

à tester

PowerQuery:
let
A = Csv.Document(File.Contents("/Users/brice/Desktop/Report - Brice(20).csv"),[Delimiter=",", Columns=14, Encoding=1252, QuoteStyle=QuoteStyle.None]),
B = {"Date","Location","Transaction","Sales Order", "Bill Order", "Customer", "Item Code", "Item Name", "Quantity", "CASH", "Unit Price", "Total", "VAT 7%", "Included TVA"},
C = {type date} & List.Repeat({type text}, 7) & List.Repeat({type number}, 6),
D = List.Select(List.Transform(List.Skip(Table.ToRows(A),2), each {try Date.From(_{0}, "fr-FR") otherwise _{0}} & List.Skip(_)), each _{5} <> ""),
E = Table.TransformColumnTypes(Table.FromRows(D, B), List.Zip({B,C}))
in E

Ensuite, pour le groupage, que veux-tu faire exactement ?

Cordialement
 
Bonjour

un exemple.

TCD créé au pifomètre mais avec regroupements

Le nom du csv est passé en paramètres dans l'onglet Chemin

L'actualisation du TCD ira chercher le bon fichier si le paramètre est à jour
 

Pièces jointes

Dernière édition:
Bonjour à tous,
Une autre proposition à tester,

PowerQuery:
let
    f=(x)=>[a = Table.PromoteHeaders(Table.Skip(Csv.Document(x,null,",",null,1252))),
            b = Table.ReplaceValue(a,",","",Replacer.ReplaceText,{"Bttl", "CASH", "Unit Price", "Total", "VAT 7%", "ยอดรวม"}),
            c = Table.TransformColumnTypes(b, {{"Bttl", type number}, {"CASH", type number}, {"Unit Price", type number}, {"Total", type number}, {"VAT 7%", type number}, {"ยอดรวม", type number}}, "en-150"),
            d = Table.SelectRows(c, each Text.Contains([วันที่], "/")),
            e = Table.RenameColumns(d, {{"วันที่", "Date"}, {"ชื่อสถานที่", "Location"}, {"ประเภทธุรกรรม", "Transaction"}, {"เลขที่ใบสั่งขาย", "Sales Order"}, {"เลขที่ใบขาย", "Bill Order"}, {"ชื่อลูกค้า/ผู้ขาย", "Customer"}, {"Bttl", "Quantity"}, {"ยอดรวม", "Included TVA"}})][e],   
 
    path = Excel.CurrentWorkbook(){[Name="Dossier"]}[Content]{0}[Chemin], //nom défini "Dossier" = chemin du dossier dans Excel
    from = Folder.Contents(path),
    fltr = Table.SelectRows(from,(x)=>x[Extension]=".csv" and not Text.Contains(x[Name],"~")),
    slct = Table.SelectColumns(fltr,{"Name","Content"}),
    tr = Table.TransformColumns(slct,{"Content",f}),
    nms = List.Distinct(List.Combine(List.Transform(tr[Content],Table.ColumnNames))),
    typ = {type date} & List.Repeat({type text}, 7) & List.Repeat({type number}, 6),
    zip = List.Zip({nms,typ}),
    exp = Table.ExpandTableColumn(tr,"Content",nms),
    tr1 = Table.TransformColumnTypes(exp,zip)
in
    tr1
Cordialement
 
Dernière édition:
RE
Sur quel champ ?
Sur la colonne item, j'ai plus de 255 items.
Je n'ai pas besoin de tous les faire ressortir sur le pivot chart, uniquement le top 10 items pour chaque customer de manière dynamique avec des slicers et/ou (encore mieux) avec une liste déroulante.

Je créée en fait un dashboard de ventes, l'idée est d'avoir le top 10 items (en quantité) qui ressortent de manière dynamique, le revenu total pour chacun des clients avec possibilité de sélectionner la période via slicer ou autre associé à une courbe pivot chart et d'autres statistiques que j'aimerais faire ressortir...
 
- 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

  • Question Question
Réponses
16
Affichages
1 K
Réponses
2
Affichages
586
Retour