Power Query [Resolu] Importer plusieurs fichiers excel provenant de dossiers différents sur sharepoint

vgendron

XLDnaute Barbatruc
Bonjour !
Ca faisait un bail que je n'étais pas venu - nouvelle mission pro oblige..

Me voici donc avec un besoin "particulier ?? dans l'utilisation de Power Bi pour lequel je suis totalement novice..

j'ai plusieurs fichiers excel identiques (basés sur le meme template) enregistrés dans différents dossiers sharepoint

j'ai besoin de combiner tous ces fichiers pour en faire une synthèse

1) je sais importer UN fichier enregistré à un endroit spécifique d'un dossier ==> importer fichier sharepoint, et on lui donne le chemin complet du fichier
2) je sais importer PLUSIEURS fichiers enregistrés dans UN dossier unique ==> importer dossier sharepoint, et on lui donne le chemin du dossier qui contient les fichiers

MAIS je ne sais pas importer PLUSIEURS fichiers enregistrés dans PLUSIEURS dossiers

dans la mesure où je connais le NOM des fichiers ET leur emplacement, j'avais cru comprendre que passer par une liste Sharepoint ferait l'affaire.. mais visiblement
soit une liste ne sert pas à ca, soit je le fais mal..


sinon, il va falloir que je passe par une macro VBA qui va aller m'ouvrir chacun des fichiers listés pour y récupérer les données voulues==> et la.. je ne sais pas comment faire ouvrir un fichier sous sharepoint par excel (en vba)

Voila, si vous avez des avis, conseils, pistes, je suis preneur

Merci

Note: j'ai bien vu ce site Import Multifiles from multi folders
mais l'astuce semble consister à importer toute l'arborescence d'un sharepoint, et de filtrer sur juste sur quelques dossiers ==> ca suppose une arborescence bien définie..
sauf que moi.. justement les folders peuvent être n'importe où ==> il faudrait que je puisse filtrer selon la liste des fichiers souhaités..
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

@vgendron
et la.. je ne sais pas comment faire ouvrir un fichier sous sharepoint par excel (en vba)
Ca je sais faire
Il suffit d'avoir le chemin UNC (voir ci-dessous exemple)
\\SharePointServer\Path\MorePath\DocumentLibrary\Folder

Pour l'obtenir, quand je suis dans un dossier Sharepoint, je fais Afficher dans l'Explorateur Windows
et je copie/colle le chemin affiché dans la barre d'adresse dans mon code VBA

Parfois, aussi je mappe un lecteur réseau sur un espace Sharepoint, et mon VBA pointe sur le chemin de ce lecteur réseau.
 

vgendron

XLDnaute Barbatruc
Hello @Staple1600
merci pour le tips, je vais laisser le VBA de coté pour l'instant.. car je pense être sur une très bonne piste

il explique clairement comment récupérer des fichiers dans plusieurs dossiers à partir d'une liste de dossiers..
dans la video, tous les fichiers sont sur son disque dur, mais il me semble l'avoir entendu dire que les chemins d'accès pouvaient être vers le sharepoint..

j'ai déjà reproduit son tuto pour des fichiers sur le PC, reste plus qu'à adapter vers le sharepoint...

je reviens vite pour les résultats
 

vgendron

XLDnaute Barbatruc
et voila

avec un peu de persévérance
j'ai appliqué la méthode de la video pour me faire la main

ensuite,
j'ai refait la méthode en adaptant à mon besoin
1) dans une feuille excel, inscrire le chemin complet des fichiers (chemin/nomfichier.xls)
2) faire le traitement pour UN fichier (= importer une TS présente dans le fichier et la traiter)
3) modifier la requete en fonction
4) charger la liste complete des fichiers et appliquer la fonction à la liste

la subtilité qui m'a posé quelques problèmes
quand on charge un fichier localisé sur le disque
Source = Excel.CurrentWorkbook(){[Name="PathCompletFichier"]}[Content],

alors que si le fichier est localisé sur un sharepoint
Source = Excel.Workbook(Web.Contents("PathCompletFichier"), null, true),
 

vgendron

XLDnaute Barbatruc
Hello @Staple1600

Je sais pas trop si le code tel quel te sera d'une quelconque aide, mais voici que j'ai finalement mis en place
(pas de web content: je devais avoir des soucis d'accès au sharepoint pro puisqu'il me demandait de me connecter...)

quelques indications pour comprendre
les fichiers Excel à importer sont des plans de validation.xls
Chacun contient deux Tables Structurées "t_SynthSanction" et "t_SynthTestStatut"

la liste des fichiers à importer se trouve dans une table: "t_ListePVP"
dans cette table, il y a le chemin complet/NomFichier.xls

le code qui lit la liste des fichiers à importer et qui applique la fonction "Extraire Sanction"
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="t_ListePVP"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"NomFichier", type text}, {"Path", type text}}),
    #"Fonction personnalisée appelée" = Table.AddColumn(#"Type modifié", "Extraire_Sanction", each Extraire_Sanction([Path])),
    #"Extraire_Sanction développé" = Table.ExpandTableColumn(#"Fonction personnalisée appelée", "Extraire_Sanction", {"Sanction", "Cell", "Module", "Pack", "BMS", "System complet", "Component", "Final Application", "Non affecté", "Total"}, {"Sanction", "Cell", "Module", "Pack", "BMS", "System complet", "Component", "Final Application", "Non affecté", "Total"}),
    #"Colonnes supprimées" = Table.RemoveColumns(#"Extraire_Sanction développé",{"Path"})
in
    #"Colonnes supprimées"


le code la fonction "ExtraireSanction"
VB:
(Extraire_Sanction)=>
let
    Source = Excel.Workbook(File.Contents(Extraire_Sanction), null, true),
    t_SynthSanction_Table = Source{[Item="t_SynthSanction",Kind="Table"]}[Data],
    #"Type modifié" = Table.TransformColumnTypes(t_SynthSanction_Table,{{"Sanction", type text}, {"Cell", Int64.Type}, {"Module", Int64.Type}, {"Pack", Int64.Type}, {"BMS", Int64.Type}, {"System complet", Int64.Type}, {"Component", Int64.Type}, {"Final Application", Int64.Type}, {"Non affecté", Int64.Type}, {"Total", Int64.Type}})
in
    #"Type modifié"
 

Discussions similaires

Réponses
18
Affichages
1 K

Statistiques des forums

Discussions
315 118
Messages
2 116 426
Membres
112 745
dernier inscrit
mcanas