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?
 
RE
Sur ton exemple j'en ai 335 et je peux créer un segment
Je peut filtrer sur 10 premiers aussi
Oui effectivement ça fonctionne correctement!

Petite question je fais un diagramme dynamique pour le top 5 items en quantité pour customer, ça fonctionne bien sauf lorsqu'un qu'un customer commande plusieurs produits mais à quantité égale alors le diagramme affichera plus de 5 items.

Vous savez comment établir une règle dans ce cas figure?
 
Bonjour

Dans un TCD, soit ce sont les filtres qui font office de SI, soit dans certains cas on peut utiliser un champs calculé mais il y a pas mal de limitations...

Si tu pars de PowrerQuery c'est plutôt là que le possibilités sont nombreuses
 
Bonjour

Dans un TCD, soit ce sont les filtres qui font office de SI, soit dans certains cas on peut utiliser un champs calculé mais il y a pas mal de limitations...

Si tu pars de PowrerQuery c'est plutôt là que le possibilités sont nombreuses
Bonjour,

Effectivement j'ai très peu utilisé powerquery à vrai dire... C'est la première fois que je l'utilise et je n'ai que transformé des données et les ai mises au propre (d'ailleurs merci à tous pour votre aide).

J'aimerai savoir s'il est possible via excel ou powerquery de pouvoir créer une alerte sous forme de pop-up message box si l'un item n'a pas été commandé sur une durée de 30 jours.
 
RE

Pas vraiment mais a placer dans le Workbook.Open

Reste à définir le contrôle : vérifier une cellule contenant une formule ou rafraichir une requête qui donne cette liste et selon le cas afficher ou non le message.

Dans la mesure où le fichier est traité par PowerQuery, je partirais sur cette option
 
Bonjour,

Je n'ai pas trop avancé sur mon fichier mais ça avance! 😁

J'aimerais que vous puissiez m'éclairer sur Power Query.

J'aimerai créer une colonne qui créerait un identifiant unique à chacun de mes clients en fonction des mois car en effet chaque mois, il se peut qu'un client passe de "Small Accounts" à "Core Accounts" ou bien même "Key Accounts" dans la colonne Customer Segment et donc j'imagine qu'il y a une fonction comme countif mais je ne sais pas comment l'appliquer sur power query.

Voici mon code complet sur power query :


let
Source = Csv.Document(File.Contents("/Users/brice/Desktop/Report.csv"), [Delimiter = ",", Columns = 10, Encoding = 65001, QuoteStyle = QuoteStyle.None]),
#"Removed columns" = Table.RemoveColumns(Source, {"Column1"}),
#"Changed column type" = Table.TransformColumnTypes(#"Removed columns", {
{"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}
}),
#"Removed top rows" = Table.Skip(#"Changed column type", 1),
#"Promoted headers" = Table.PromoteHeaders(#"Removed top rows", [PromoteAllScalars = true]),
#"Clean date format" = Table.TransformColumns(#"Promoted headers", {
{"Date", each if _ = null then null else Text.From(_)}
}),
#"Fixed date format" = Table.TransformColumns(#"Clean date format", {
{"Date", each if _ = null then null else
try Date.FromText(_, [Format="dd/MM/yy"])
otherwise null}
}),
#"Changed column type 1" = Table.TransformColumnTypes(#"Fixed date format", {
{"Bttl", Int64.Type},
{"Unit Price SOLD", type number},
{"Total", type number},
{"CASH (STD PRICE)", Int64.Type}
}),
#"Filtered rows" = Table.SelectRows(#"Changed column type 1", each ([Item Code] <> "")),
#"Replaced value" = Table.ReplaceValue(#"Filtered rows", null, 0, Replacer.ReplaceValue, {"Unit Price SOLD"}),
#"Replaced value 1" = Table.ReplaceValue(#"Replaced value", null, 0, Replacer.ReplaceValue, {"Total"}),
#"Replaced value 2" = Table.ReplaceValue(#"Replaced value 1", null, 0, Replacer.ReplaceValue, {"CASH (STD PRICE)"}),
#"Replaced value 3" = Table.ReplaceValue(#"Replaced value 2", null, 0, Replacer.ReplaceValue, {"Total"}),

// Calcul du total par client
#"Grouped rows" = Table.Group(#"Replaced value 3", {"Customer"}, {
{"CustomerTotal", each List.Sum([Total]), type number}
}),

// Calcul du maximum total
MaxTotal = List.Max(#"Grouped rows"[CustomerTotal]),

// Ajout de la colonne de segmentation
#"Added customer segment" = Table.AddColumn(#"Grouped rows", "Customer Segment", each
if [CustomerTotal] >= MaxTotal * 0.8 then "A - Key Accounts"
else if [CustomerTotal] >= MaxTotal * 0.5 then "B - Core Accounts"
else if [CustomerTotal] >= MaxTotal * 0.2 then "C - Growth Accounts"
else "D - Small Accounts",
type text),

// Fusion avec la table principale
#"Merged queries" = Table.NestedJoin(#"Replaced value 3", {"Customer"}, #"Added customer segment", {"Customer"}, "Customer Segment", JoinKind.LeftOuter),
#"Expanded customer segment" = Table.ExpandTableColumn(#"Merged queries", "Customer Segment", {"Customer Segment"}, {"Customer Segment"}),
#"Changed column type 2" = Table.TransformColumnTypes(#"Expanded customer segment", {{"Date", type date}})
in
#"Changed column type 2"


Merci pour votre aide
 
Bonjour

De façon générale un ID unique obtenu par calcul risque d'évoluer en fonction de se qui se passe sur d'autres lignes, donc il ,'est plus vraiment un ID

Le code M que tu postes ne fonctionnant pas sur le cvs transmis le 28/01, on ne peut suivre...
 
- 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