Répertorier les fichiers d'un dossier automatiquement

Bonjour à tous !

Vous avez été tellement efficaces sur ma dernière question que je n'hésites pas à faire appel à vous à nouveau, plein d'espoir !

J'ai trouvé sur le net, un (même deux) moyens de lister des fichiers dans un dossier, sans avoir à les rentrer un par un :

  • La première, très simple, consiste à copier/coller le nom du répertoire dans un navigateur et à ensuite copier coller le résultat dans excel, ce qui a pour avantage de donner également la taille des fichiers (ainsi que la date de dernière modification mais qui ne m'est pas du tout utile)

    L'inconvénient c'est qu'à chaque mise à jour du dossier (ajout d'un fichier, changement de nom, ...), la liste n'est plus à jour
  • La 2e, est d'utiliser le menu "formules>gestionnaire des noms" avec les formules suivantes :
    =FILES(Sheet1!$A$1)
    =IFERROR(INDEX(Filenames,ROW(A1)),"")
mais quand j'essaie, elle ne fonctionne pas, Excel me renvoie une erreur de formule (j'ai bien vérifier que le nom dans la formule corresponde à celui entré dans le gestionnaire) De plus, cette méthode ne donne pas la taille des fichiers.
  • Auriez-vous une solution qui me permettrait, dans l'idéal, de lister les fichiers, avec la taille, qui se mette à jour à l'ouverture d'excel ? Je ne souhaite pas utiliser d'outil externe (comme dans la 4e méthode utilisant Kutools dans le lien ci-dessus) et dans un monde parfait (mais je pense que ça n'existe pas), sans VBA puisque je n'y connais rien.

D'avance merci à vous pour votre aide précieuse :)

La 2e solution vient d'un site dont j'essaie de poster le lien, mais je n'y arrive pas car mon compte a posté moins de 30 messages, j'essaie de l'insérer en ajoutant des espaces ci-dessous :

https:// fr.extendoffice .com/documents/excel/627-excel-list-files .html

Bonjour,

Voici une solution VBA quand même qui s'actualise à chaque activation de la feuille :

private sub worksheet_activate()
MonRep$ = "C:\BLA\BLO" 'sans antislash de fin !!!
with me
    .cells(1).currentregion.clearcontents
    t = Lister(MonRep)
    if isarray(t) then .cells(1).resize(ubound(t)).value = application.transpose(t)
end with
end sub

Function Lister(sPath$)
dim t()
if dir(spath, vbdirectory) = "" then exit sub
sfile = dir(spath & "\*")
do while sfile <> ""
    n = n + 1
    redim preserve t(1 to n)
    t(n) = sfile
    sfile = dir
loop
if n > 0 then Lister = t
end function

Pour l'instant, le répertoire (qui ne doit pas contenir d'antislash à la fin) est inscrit en dur dans le code. Il est possible de le placer dans une cellule excel...

Ce code est à placer dans le module de la feuille accueillant la liste des fichiers !

Cdlt,

Rechercher des sujets similaires à "repertorier fichiers dossier automatiquement"