Microsoft 365 Remplir cellules à partir de plusieurs fichiers Excel d'un dossier

edgy63

XLDnaute Nouveau
Bonjour,
Je cherche à remplir automatiquement dans un fichier excel des cellules dont les valeurs proviennent de plusieurs fichiers excel présent dans un même dossier.
Pour l'instant je rempli les cellules manuellement en copiant collant le chemin et nom du fichier avec la formule suivante :
='chemin_d'accès_du_dossier\[nom_du_fichier]nom_de_l'onglet' ! position_de_la_cellule
Afin d'aller plus vite je voudrai inclure directement le nom du chemin + dossier dans la formule.
Pour ça j'ai fait "obtenir des données", "à partir d'un dossier" et j'obtiens un tableau avec une colonne "chemin" et une colonne "nom de fichier" que je lie avec la formule =concat
Mais je n'arrive pas à inclure le résultat de cette formule dans la formule du haut. Donc inclure une formule dans une formule. J'ai beau chercher sur les forums et google, je ne trouve pas comment faire.
Avez vous un moyen de faire ceci ou une autre solution à m'apporter?
 

edgy63

XLDnaute Nouveau
Parfait.
Petite question : tu es passé par plusieurs étapes dans l'éditeur power query ou directement par du code dans éditeur avancé?
Si c'est par code je vais regarder ça plus en détail pour essayer de comprendre le mécanisme derrière.
Si c'est par les requête peux tu m'expliquer un peu les étapes?

En tous cas merci
 

alexga78

XLDnaute Occasionnel
Bonjour à tous,
une autre proposition ( chemin du fichier à adapter également.


PowerQuery:
let
    Dossier = "C:\PQ\excel2\Magasins",
    fx = (x)=>
    [
      a = List.Buffer(List.Combine(List.Distinct(List.Split(List.Combine (List.Select(List.Transform(Table.ToRows(x),
          (x)=> List.RemoveNulls(x)), each List.Count(_) <> 0)),2)))),
      b = List.PositionOf(a, "GPS") + 2,
      c = List.RemoveItems(List.Range(a, b, List.Count(a) - b),  {"Catégorie", "CA", "Bénéfice"}),
      d = List.Zip({List.TransformMany(List.Select(c, each not Value.Is(_, type number)), (y)=> {" - CA", " - Bénéf"},
          (x,y)=> x & y)} & {List.Select(c, each Value.Is(_, type number))}),
      e = Table.PromoteHeaders(Table.FromColumns(List.Split(List.Range(a, 0, b),2) & d))
    ] [e] ,
    Source = List.Transform(Table.SelectRows(Folder.Files(Dossier), each [Attributes]?[Hidden]? <> true)[Content], (x)=> Excel.Workbook(x)[Data]{0}),
    Result = Table.Combine(List.Transform(Source, each fx(_)))
in
    Result

Bonne fin de WE
 

Discussions similaires

Statistiques des forums

Discussions
314 963
Messages
2 114 808
Membres
112 255
dernier inscrit
Sandrine03430