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

  • Initiateur de la discussion Initiateur de la discussion Mongo
  • Date de début Date de début

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 !

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
icon_lol.gif
 
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)?
1701427232307.png
1701427253916.png
 
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)?
Regarde la pièce jointe 1185124Regarde la pièce jointe 1185125

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).


1701427911720.png


1701427964866.png
 

Pièces jointes

  • 1701427669926.png
    1701427669926.png
    90.8 KB · Affichages: 10
  • 1701427757601.png
    1701427757601.png
    125.2 KB · Affichages: 9
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
1701429773319.png

Et en choisissant "Power Query"
1701429809878.png
 
Bonjour @Mongo ,

C'est possible assez facilement:

tu essaye d'importer une feuille...
1701431988746.png


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.

1701432101143.png


La colonne Data contient tes feuilles...
1701432245564.png


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

A+

Merinos
 
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.
 
Bonjour @Mongo ,

C'est possible assez facilement:

tu essaye d'importer une feuille...
Regarde la pièce jointe 1185141

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.

Regarde la pièce jointe 1185142

La colonne Data contient tes feuilles...
Regarde la pièce jointe 1185143

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

A+

Merinos

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... 🙂
 
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...
 
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
 
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
 
- 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

Retour