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)),"")
- 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 functionPour 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,