XL 2019 POWERQUERY et fichier .SLK

ben724914

XLDnaute Nouveau
Bonjour

je souhaite ouvrir des fichiers slk exporté du logiciel de compta SAGE en utilisant powerquery pour automatiser des taches sans macros.

le fichier s'ouvre très bien directement en excel mais il bloque en powerquery en indiquant "La table externe n'est pas dans le format attendu. ».

vous allez me dire de rester en excel peut-être mais j'aimerai y arriver en powerquery...
 

Pièces jointes

  • GL 30 JUIN - Copie.zip
    350 bytes · Affichages: 8
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

1691562410470.png
 

ben724914

XLDnaute Nouveau
Bonjour Chris

merci pour ce retour que je n'ai pu tester que ce matin.

J'obtiens de mon coté cela, obtenez vous la même chose ?
1691827643228.png


si c'est pareil, je me suis mal exprimé alors car je voulais pouvoir récupérer de façon tabulaire comme excel le fait directement si on l'ouvre brutalement ci dessous
1691827785453.png

je me dit que si Excel l'ouvre brutalement ; powerquery doit le pouvoir aussi pour traiter en masse plusieurs fichiers du meme format sans les ouvrir tous et les convertir en excel avant de commencer

si vous obtenez comme ce que je souhaite juste au dessus ; très bien mais il doit y avoir quelque chose que je fais mal avec mon excel 2019. qu'en pensez vous ?
 

chris

XLDnaute Barbatruc
Bonjour

Je n'avais pas compris que le format encodait les données

J'ai utilisé un convertisseur en ligne pour obtenir un CSV mais dans la mesure où c'est un format txt UTF8 on doit pouvoir trouver le mode de decoding...

Et cela fonctionne
1691840005968.png

Je n'ai pas trouvé le code mais par déduction à partir de l'exemple (sans doute non exhaustif j'ai fait cela
VB:
let
    Source = Table.FromColumns({Lines.FromBinary(File.Contents("T:\TEMP\GL 30 JUIN - Copie.slk"), null, null, 65001)}),
    #"Fractionner la colonne par délimiteur" = Table.SplitColumn(Source, "Column1", Splitter.SplitTextByEachDelimiter({";"}, QuoteStyle.Csv, false), {"Column1", "Column2"}),
    #"Lignes filtrées" = Table.SelectRows(#"Fractionner la colonne par délimiteur", each ([Column1] = "C" or [Column1] = "F")),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Lignes filtrées", "Col", each Text.BetweenDelimiters([Column2],"X",";")),
    #"Personnalisée ajoutée1" = Table.AddColumn(#"Personnalisée ajoutée", "Ligne", each Text.BetweenDelimiters([Column2],"Y",";")),
    #"Personnalisée ajoutée2" = Table.AddColumn(#"Personnalisée ajoutée1", "Valeur", each Text.AfterDelimiter([Column2],"K")),
    #"Type modifié" = Table.TransformColumnTypes(#"Personnalisée ajoutée2",{{"Col", Int64.Type}, {"Ligne", Int64.Type}}),
    #"Rempli vers le bas" = Table.FillDown(#"Type modifié",{"Col", "Ligne"}),
    #"Lignes groupées" = Table.Group(#"Rempli vers le bas", {"Col", "Ligne"}, {{"Valeur", each List.Max([Valeur]), type text}}),
    #"Lignes triées" = Table.Sort(#"Lignes groupées",{{"Col", Order.Ascending}, {"Ligne", Order.Ascending}}),
    #"Colonne dynamique" = Table.Pivot(Table.TransformColumnTypes(#"Lignes triées", {{"Col", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(#"Lignes triées", {{"Col", type text}}, "fr-FR")[Col]), "Col", "Valeur"),
    #"Type modifié1" = Table.TransformColumnTypes(#"Colonne dynamique",{{"2", Int64.Type}}),
    #"Type modifié2" = Table.TransformColumnTypes(#"Type modifié1",{{"2", type date}}),
    #"Type modifié avec paramètres régionaux" = Table.TransformColumnTypes(#"Type modifié2", {{"8", type number}, {"9", type number}}, "en-US")
in
    #"Type modifié avec paramètres régionaux"
 
Dernière édition:

chris

XLDnaute Barbatruc
RE
Si tu as lu le lien que j'ai donné : c"est un très ancien format de tableur.

Les Power sont tournés vers l'avenir pas vers un passé aussi lointain...

Pour autant que je sache Sage peut exporter dans des formats plus récents et est même basé sur un moteur SQL depuis pas mal d'années...
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 185
dernier inscrit
salhit