PQ - Fusionner plusieurs fichiers d'un même dossier Msg erreur

Bonsoir,

J'essaie de rapatrier les fichiers d'un dossier à l'aide de power query. Mais j’obtiens un message d'erreur.

Comment fusionner plusieurs fichiers d'un même dossier
https://www.youtube.com/watch?v=zvbdmuGczuc

FxMaFontion
let
    MaFonction = (FolderPath, SheetName)=>
let
    Source = Excel.Workbook(File.Contents(FolderPath), null , true),
    Feuil1_Sheet = Source{[Item=SheetName,Kind="Sheet"]}[Data],
    SupprLig = Table.Skip(Feuil1_Sheet,8),
    PromoteHeader = Table.PromoteHeaders(SupprLig, [PromoteAllScalars=true]),
    TypageCol = Table.TransformColumnTypes(PromoteHeader,{{"Janvier", Currency.Type}, {"Février", Currency.Type}, {"Mars", Currency.Type}, {"Avril", Currency.Type}, {"Mai", Currency.Type}, {"Juin", Currency.Type}, {"Juillet", Currency.Type}, {"Août", Currency.Type}, {"Septembre", Currency.Type}, {"Octobre", Currency.Type}, {"Novembre", Currency.Type}, {"Décembre", Currency.Type}}),
    SupprCol = Table.RemoveColumns(TypageCol,{"Total"})
in
    SupprCol
in
    MaFonction

Ventes
let
    Source = Folder.Files("C:\Users\dmago\Downloads\Ventes"),
    #"Autres colonnes supprimées" = Table.SelectColumns(Source,{"Name", "Folder Path"}),
    #"Duplication de la colonne" = Table.DuplicateColumn(#"Autres colonnes supprimées", "Name", "Name - Copier"),
    #"Texte extrait avant le délimiteur" = Table.TransformColumns(#"Duplication de la colonne", {{"Name - Copier", each Text.BeforeDelimiter(_, "."), type text}}),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Texte extrait avant le délimiteur", "Personnalisé", each FxMaFonction([Folder Path]&[Name],[#"Name - Copier"]))
in
    #"Personnalisée ajoutée"

Message d'erreur obtenu
image

Qu'est ce que je fais mal ?

Bonne soirée,
Cordialement

8ventes-marie.xlsx (12.98 Ko)
5ventes-celine.xlsx (12.99 Ko)

Re,

Je pense avoir trouvé, l'erreur provient du nom de la feuille. J'ai modifié la requête en conséquence :

let
    MaFonction = (FolderPath, SheetName)=>
let
    Source = Excel.Workbook(File.Contents(FolderPath), null , true),
    Feuil1_Sheet = Source{[Item= Source[Item]{0},Kind="Sheet"]}[Data],
    SupprLig = Table.Skip(Feuil1_Sheet,8),
    PromoteHeader = Table.PromoteHeaders(SupprLig, [PromoteAllScalars=true]),
    TypageCol = Table.TransformColumnTypes(PromoteHeader,{{"Janvier", Currency.Type}, {"Février", Currency.Type}, {"Mars", Currency.Type}, {"Avril", Currency.Type}, {"Mai", Currency.Type}, {"Juin", Currency.Type}, {"Juillet", Currency.Type}, {"Août", Currency.Type}, {"Septembre", Currency.Type}, {"Octobre", Currency.Type}, {"Novembre", Currency.Type}, {"Décembre", Currency.Type}}),
    SupprCol = Table.RemoveColumns(TypageCol,{"Total"})
in
    SupprCol
in
    MaFonction

Bonsoir,
Cordialement

Bonjour

Une remarque : du fait du Source[Item]{0} le 2d argument SheetNamede la nouvelle fonction devient inutile, il peut être supprimé.
Stéphane

Bonjour à tous !

Une autre approche possible ?

Bonjour,

Merci à raccourcix et JFL, pour vos contributions.

Une remarque : du fait du Source[Item]{0} le 2d argument SheetName de la nouvelle fonction devient inutile, il peut être supprimé.

Ok, c'est noté.

Une autre approche possible ?

Intéressant, c'est plus rapide et plus lisible

Question subsidiaire : Est il possible de générer autant de requêtes que de dossier dans la colonne Item ?

Bonne journée,
Cordialement

Bonjour,

Belle découverte, ce Table.FromPartitions....

Je connaissais l'adage :

Avec Renault, tous les jours un bruit nouveau

On peut maintenant ajouter :

Avec JFL, tous les jours une technique nouvelle

Bravo, et bonne semaine

@JFL,

Re,

Dans l'étape ClasseurXL

= Table.AddColumn(Filtre, "XL", each Excel.Workbook([Content]){[Item="t_Ventes"]}[Data])[[Name],[XL]]

la partie {[Item="t_Ventes"]} fonctionne dans le cas où le classeur contient un tableau structuré, mais dans le cas où il n'y en à pas quelle syntaxe utilisée ?

Cordialement

Bonjour à tous de nouveau !

Je connaissais l'adage :

Avec Renault, tous les jours un bruit nouveau

Je ne connaissais pas (ou plus....) !

Mes zygomatiques épanouis et moi-même, nous vous remercions pour ce partage (ou rappel...)

Bonjour à tous de nouveau !

la partie {[Item="t_Ventes"]} fonctionne dans le cas où le classeur contient un tableau structuré, mais dans le cas où il n'y en à pas quelle syntaxe utilisée ?

Cordialement

Elément à tester :

{[Item="Feuil1"]}

Mais :

  1. Les classeurs devront tous avoir une feuille nommée "Feuil1" sous peine de générer une erreur.
  2. Le code lié à l'intégration des données devra être entièrement revu pour éliminer, ou retraiter, les informations impropres (lignes superflues, en-têtes, etc....).

Re,

Hélas, le nom des feuilles n'est malheureusement pas Feuil1, ni identique pour chaque fichier.

Tant pis, j'utiliserais l'autre méthode, mais je garde, précieusement, la tienne sous le coude.

Bonne soirée.

Re-,

S'il n'y a qu'un seul onglet, on peut aussi essayer :

= Table.AddColumn(Filtre, "XL", each Excel.Workbook([Content]){[Kind="Sheet"]}[Data])[[Name],[XL]]

Du moins, il me semble...

Bonne soirée

Bonsoir à tous !

Proposition dynamique avec retraitements (liés à la structure des classeurs présentés) :

= Table.AddColumn(Filtre, "XL", each Table.PromoteHeaders(Table.Skip(Excel.Workbook([Content]){0}[Data], each [Column1]<>"Produit")))

A tester !

re,

un mix entre vos deux proposition fonctionne parfaitement

= Table.AddColumn(Filtre, "XL", each Excel.Workbook([Content]){[Kind="Sheet"]}[Data])[[Name],[XL]]

Merci à vous

Toujours la question subsidiaire : Est il possible de générer une requête par valeur de la colonne Name ?

Bonne soirée.

Bonsoir à tous de nouveau !

Vous n'intégrez aucun retraitement dans l'étape ?
Vos données sont conformes aux classeurs fournis dans votre demande ?

Concernant la question subsidiaire :

Quel est l'état final recherché ?
Un tableau structuré complet, généré par Power Query, associé à des segments ne peut faire l'affaire ?

A ma connaissance, Power Query ne peut générer dynamiquement x requêtes sur la base de x classeurs.

Bonsoir,

Vous n'intégrez aucun retraitement dans l'étape ?

Si, mais cette méthode ne convient pas, la fonction permet d'effectuer certains retraitements en amont.

Vos données sont conformes aux classeurs fournis dans votre demande ?

Non, les données sont différentes.

6journaux.zip (296.89 Ko)
Quel est l'état final recherché ?
Un tableau structuré complet, généré par Power Query, associé à des segments ne peut faire l'affaire ?

Obtenir la liste de certains comptes, après calcul crédit - débit pour certains et un autre calcul pour d'autres.
Les segments ne conviendront pas.

Mon souci, était de récupérer les fichiers placés dans un dossier sans l'usine à gaz classique utilisée par PQ.

image

Vous avez parfaitement répondu à mon attente, je vous en remercie.

Cordialement

Bonjour à tous !

Vos données sont conformes aux classeurs fournis dans votre demande ?

Non, les données sont différentes.

Je suis toujours étonné quand les données réelles ne sont pas structurellement conformes à la demande.
Surtout quand le demandeur est un contributeur régulier et important....

Il semblerait, au regard de la forme des journaux, que la source soit un logiciel de la gamme SAGE. Si tel est le cas, sachez qu'il est possible de connecter Power Query directement à la base SAGE (notamment la ligne 100) pour récupérer les écritures.

Bonjour,

Merci pour le important, .

Je n'avais pas osé mettre les fichiers qui émanent d'une demande sur un autre site. Mais apparemment, ils ne contiennent aucunes données confidentielles.

J'aurais dû les présenter directement, mea culpa.

Merci encore pour votre aide.

Cordialement

Rechercher des sujets similaires à "fusionner fichiers meme dossier msg erreur"