Afficher tout les chemin d'acsée d'un dosier dans un tableur ?

Fermé
sissou_007 Messages postés 80 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 7 avril 2014 - Modifié par sissou_007 le 24/10/2012 à 15:31
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 - 25 oct. 2012 à 17:00
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 :)
A voir également:

4 réponses

Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
24 oct. 2012 à 16:43
Salut,
Tu peux récupérer le chemin d'accès et le nom du fichier avec :
ActiveWorkbook.Path & "\" & ActiveWorkbook.Name 

0
sissou_007 Messages postés 80 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 7 avril 2014 6
24 oct. 2012 à 16:54
Je tape sa dans la cellule ?! Dsl mais je suis novice... :/
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
25 oct. 2012 à 09:25
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
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
25 oct. 2012 à 10:55
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
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
25 oct. 2012 à 17:00
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