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 -
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 :)

4 réponses

  1. Morgothal Messages postés 1350 Statut Membre 184
     
    Salut,
    Tu peux récupérer le chemin d'accès et le nom du fichier avec :
    ActiveWorkbook.Path & "\" & ActiveWorkbook.Name 

    0
  2. sissou_007 Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   6
     
    Je tape sa dans la cellule ?! Dsl mais je suis novice... :/
    0
  3. Morgothal Messages postés 1350 Statut Membre 184
     
    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 ;)
    0
  4. Morgothal Messages postés 1350 Statut Membre 184
     
    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 !
    0
    1. Morgothal Messages postés 1350 Statut Membre 184
       
      Et assigner la macro Macro1 à un bouton sur la feuille Excel.
      Le classeur Excel doit se trouver au même endroit que les 23 dossiers.
      0