Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Power Query Nom des onglets des fichiers importés dans Power query

Mongo

XLDnaute Junior
Bonjour,

Nouvel utilisateur de Power Query, je rencontre un problème que vous allez, je l'espère, pouvoir m'aider à régler :

- J'exporte des fichiers Excel de notre ERP.
- J'importe ces fichiers Excel dans Power Query.
- Je fusionne ces requêtes suivant certaines conditions pour ne finalement obtenir qu'un tableau à charger dans Excel.
Jusque là, tout va bien

Mon souci vient du fait que l'ERP duquel son exportées les données modifie le nom des onglets à chaque exportation.
Si je ne modifie pas le nom des onglets avant d'actualiser Power Query, l'actualisation plante car Power Query ne reconnait pas la source.
Y a t-il une solution dans Power Query pour gérer ce type de problème ?

Merci d'avance
 

Cousinhub

XLDnaute Barbatruc
Inactif
Bonjour,
Comment importes-tu tes fichiers?(via "A partir d'un dossier"?)
Le répertoire est-il toujours le même?
Combien d'onglets par fichier?
Peux-tu juste mettre une copie d'écran de tes requêtes (partie gauche), et des étapes(partie droite)?
 

Mongo

XLDnaute Junior

Bonjour Cousinhub,

je les déposes dans un répertoire qui ne change pas (s'il devait changer, je devrais mettre à jour les sources).
Je les ai importés un à un (photo ci-dessous) puis les ai fusionnés et personnalisés (ajout de calculs + divers choses) pour obtenir les données dont j'ai besoin (photo du bas).




 

Pièces jointes

  • 1701427669926.png
    90.8 KB · Affichages: 6
  • 1701427757601.png
    125.2 KB · Affichages: 6

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Est-ce qu'à un moment, tu fais un SelectRow, pour filtrer sur les noms d'onglets?
Peux-tu mettre le code de ta première requête (nommée GCO) (Editeur Avancé, tu copies le code, et le code ici, en utilisant la balise code

Et en choisissant "Power Query"
 

merinos-BernardEtang

XLDnaute Accro
Bonjour @Mongo ,

C'est possible assez facilement:

tu essaye d'importer une feuille...


Tu efface 2 étapes pour ne garder que la source.

Alors tu vois le contenu du fichier...Tu peux filtrer seulement les feuilles. Si besoin tu peux aussi enlever certaines feuilles sur base du nom.



La colonne Data contient tes feuilles...


Si tu dois importer un nombre inconnu de fichiers, tu transformes ceci en fonction et tu les applique sur le directory

A+

Merinos
 

Mongo

XLDnaute Junior
Re-,
Sinon, tu supprimes l'étape "Navigation", et reviens sur l'étape "Source".
Tu filtres sur Kind = "Sheet", "Hidden"=false...
Regarde la pièce jointe 1185137
Je viens de supprimer l'étape Navigation et dans l'étape source, les filtres étaient déjà sur Kind = "Sheet", "Hidden"=false...

Le code de ma première requète est le suivant :

let
Source = Excel.Workbook(File.Contents("C:\Users\§§§§§§§§§§§§\Documents\1-Data\2-Suivi des prix et diffusion des tarifs\Exportation Fichiers\Tarifs GCO.xlsx"), null, true),
GCO_Sheet = Source{[Item="[COLOR=rgb(0, 168, 133)]GCO[/COLOR]",Kind="Sheet"]}[Data],
#"Type modifié" = Table.TransformColumnTypes(GCO_Sheet,{{"Column1", type text}, {"Column2", type text}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}}),
#"Premières lignes supprimées" = Table.Skip(#"Type modifié",23),
#"Colonnes permutées" = Table.ReorderColumns(#"Premières lignes supprimées",{"Column2", "Column1", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8"}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées", "TAUXREDUCTION", each [Column8]/100),
#"Type modifié1" = Table.TransformColumnTypes(#"Personnalisée ajoutée",{{"TAUXREDUCTION", Percentage.Type}})
in
#"Type modifié1"

A chaque fois que j'enregistre le fichier dans le dossier source, je renomme l'onglet en GCO pour palier au nouveau nom d'onglet lors de l'exportation depuis l'ERP.
 

Mongo

XLDnaute Junior

Merci Merinos.

Mais mon souci n'est pas de filtrer certaines feuilles des fichiers importés mais de gérer le nom de l'onglet qui change à chaque mise à jour du fichier source. A moins que je n'ai pas tout compris...
 

merinos-BernardEtang

XLDnaute Accro
tu veux lire le contenu de la feuille... sans tenir compte du nom de celle-ci...

mon import ne nécésite pas de connaitre le nom des feuilles...j'obtien les noms_de_feuilles et les colonnes de données...


s'il n'y a qu'une feuille par fichier, pas de stress... ce sera simple.

S'il a y 3 feuilles par fichier dont 2 avec des noms stables dont tu n'as pas besoin, tu les elimine puis il te reste la bonne (par deduction)

Si plusieurs feuilles ont des noms qui varient c'est lus complexe...
mais si je sais que le "bonne" feuille contient "PAPA" en C4, je peux faire un test, savoir quelle feuille est bonne, eliminer les autres...
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
(Désolé, absent cet apm)

PowerQuery:
let
Source = Excel.Workbook(File.Contents("C:\Users\§§§§§§§§§§§§\Documents\1-Data\2-Suivi des prix et diffusion des tarifs\Exportation Fichiers\Tarifs GCO.xlsx"), null, true),
GCO_Sheet = Source{[Item="GCO",Kind="Sheet"]}[Data],
#"Type modifié" = Table.TransformColumnTypes(GCO_Sheet,{{"Column1", type text}, {"Column2", type text}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}}),
#"Premières lignes supprimées" = Table.Skip(#"Type modifié",23),
#"Colonnes permutées" = Table.ReorderColumns(#"Premières lignes supprimées",{"Column2", "Column1", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8"}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées", "TAUXREDUCTION", each [Column8]/100),
#"Type modifié1" = Table.TransformColumnTypes(#"Personnalisée ajoutée",{{"TAUXREDUCTION", Percentage.Type}})
in
#"Type modifié1"
Voici ton code (n'oublie pas d'utiliser les balises, c'est bien plus lisible...
A l'étape GCO_Sheet, efface Item="GCO" comme ceci :
PowerQuery:
let
Source = Excel.Workbook(File.Contents("C:\Users\§§§§§§§§§§§§\Documents\1-Data\2-Suivi des prix et diffusion des tarifs\Exportation Fichiers\Tarifs GCO.xlsx"), null, true),
GCO_Sheet = Source{[Kind="Sheet"]}[Data],
#"Type modifié" = Table.TransformColumnTypes(GCO_Sheet,{{"Column1", type text}, {"Column2", type text}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}}),
#"Premières lignes supprimées" = Table.Skip(#"Type modifié",23),
#"Colonnes permutées" = Table.ReorderColumns(#"Premières lignes supprimées",{"Column2", "Column1", "Column3", "Column4", "Column5", "Column6", "Column7", "Column8"}),
#"Personnalisée ajoutée" = Table.AddColumn(#"Colonnes permutées", "TAUXREDUCTION", each [Column8]/100),
#"Type modifié1" = Table.TransformColumnTypes(#"Personnalisée ajoutée",{{"TAUXREDUCTION", Percentage.Type}})
in
#"Type modifié1"

Ainsi, tu ne mets pas de nom d'onglet, juste le Kind=Sheet
Bonne soirée
 

Amilo

XLDnaute Accro
Bonjour à tous,

Sans trop m'être penché sur les messages, un test en passant par Folder.Files

VB:
let
    Source = Folder.Files("C:\Users\§§§§§§§§§§§§\Documents\1-Data\2-Suivi des prix et diffusion des tarifs\Exportation Fichiers")[Content],
    Fusion = Table.Combine(List.Combine(List.Transform(Source, each Excel.Workbook(_, true)[Data])))
in
    Fusion

Cordialement
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…