Bonjour,
J'utilise Excel 2013 sur Windows 8.
Je viens d'écrire une macro dont le but est de lister les fichiers contenus dans un dossier et dans ces sous-dossiers.
Je n'ai pas voulu écrire le nom du dossier en question en dur dans le code. À la place j'ai utilisé la commande
BrowseForFolder
qui demande à l'utilisateur de quel dossier il veut lister le contenu.
Cette partie fonctionne.
Ensuite je liste les fichiers contenus dans le dossier saisi.
Cela fonctionne s'il n'y a pas de sous-dossier.
Mais s'il y a des sous-dossiers alors ma macro ne les voit pas.
Quelqu'un pourrait-il avoir l'obligeance de me dire où je me suis planté ?
Merci,
Voici le texte de ma macro (indentation n'est pas bien reproduite) :
Sub Lister()
Application.ScreenUpdating = False
Dim MonDossier As String, MonFichier As String
Dim objShell As Object, objFichier As Object, objFichierItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFichier = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set objFichierItem = objFichier.Items.Item
MonDossier = objFichierItem.Path
Cells(1, 1) = repertoire
MonFichier = Dir(MonDossier & "\*", vbDirectory)
i = 2
Do While MonDossier <> ""
if GetAttr(MonDossier & "\" & MonDossier) = vbDirectory Then
Cells(i, 1) = MonDossier
i = i + 1
End If
MonDossier = Dir()
Loop
End Sub
J'utilise Excel 2013 sur Windows 8.
Je viens d'écrire une macro dont le but est de lister les fichiers contenus dans un dossier et dans ces sous-dossiers.
Je n'ai pas voulu écrire le nom du dossier en question en dur dans le code. À la place j'ai utilisé la commande
BrowseForFolder
qui demande à l'utilisateur de quel dossier il veut lister le contenu.
Cette partie fonctionne.
Ensuite je liste les fichiers contenus dans le dossier saisi.
Cela fonctionne s'il n'y a pas de sous-dossier.
Mais s'il y a des sous-dossiers alors ma macro ne les voit pas.
Quelqu'un pourrait-il avoir l'obligeance de me dire où je me suis planté ?
Merci,
Voici le texte de ma macro (indentation n'est pas bien reproduite) :
Sub Lister()
Application.ScreenUpdating = False
Dim MonDossier As String, MonFichier As String
Dim objShell As Object, objFichier As Object, objFichierItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFichier = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set objFichierItem = objFichier.Items.Item
MonDossier = objFichierItem.Path
Cells(1, 1) = repertoire
MonFichier = Dir(MonDossier & "\*", vbDirectory)
i = 2
Do While MonDossier <> ""
if GetAttr(MonDossier & "\" & MonDossier) = vbDirectory Then
Cells(i, 1) = MonDossier
i = i + 1
End If
MonDossier = Dir()
Loop
End Sub
Dernière édition: