Afficher tout les chemin d'acsée d'un dosier dans un tableur ?
sissou_007
Messages postés
81
Date d'inscription
Statut
Membre
Dernière intervention
-
Morgothal Messages postés 1350 Statut Membre -
Morgothal Messages postés 1350 Statut Membre -
Bonjour,
Je possé un dosier ou j'ai 23 sous dossier et dans chacun de ses sous dossier, il y a des fichier, je souhaiterais crée un fichier index sous Exel, récapitulant tout les chemin d'acsée avec leurs lien hypertexte... Il y a t-il une formule ou un script VBA permettant de faire ce que je demande ?
Merci bien :)
Je possé un dosier ou j'ai 23 sous dossier et dans chacun de ses sous dossier, il y a des fichier, je souhaiterais crée un fichier index sous Exel, récapitulant tout les chemin d'acsée avec leurs lien hypertexte... Il y a t-il une formule ou un script VBA permettant de faire ce que je demande ?
Merci bien :)
4 réponses
-
Salut,
Tu peux récupérer le chemin d'accès et le nom du fichier avec :ActiveWorkbook.Path & "\" & ActiveWorkbook.Name
-
Je tape sa dans la cellule ?! Dsl mais je suis novice... :/
-
Dans un script VBA, pour récupérer les chemins :
faire une boucle qui ouvre tous les fichiers .xls d'un dossier, et utiliser ActiveWorkbook.Path pour inscrire le chemin dans une cellule du classeur d'origine...
Je vais voir si j'ai le temps de développer un script aujourd'hui ;)
-
Voilà un script qui fonctionne chez moi ...
Il faut bien cocher Microsoft Scripting Runtime dans Outils>Référence de l'éditeur VBA.
Il faut donc écrire ce code dans un nouveau module :
Option Explicit Private oCollec As Collection Public Sub Macro1() Dim chemin As String chemin = ActiveWorkbook.Path Set oCollec = New Collection SearchAllFilesInFolders (chemin) AfficheListe Set oCollec = Nothing End Sub Private Sub SearchAllFilesInFolders(ByVal chemin As String) Dim fso As FileSystemObject Dim dossier As Folder Set fso = New FileSystemObject Set dossier = fso.GetFolder(chemin) Call scanFolder(dossier) End Sub Private Sub scanFolder(ByVal dossier As Folder) Dim sousdossier As Folder Dim fichier As File For Each fichier In dossier.Files oCollec.Add fichier Next For Each sousdossier In dossier.SubFolders Call scanFolder(sousdossier) Next End Sub Private Sub AfficheListe() Dim i As Long Dim lig As Long Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) lig = 2 With ws For i = 1 To oCollec.Count .Range("A" & lig).Value = oCollec(i) lig = lig + 1 Next i End With End Sub
Merci à Polux31 !