Bonjour,
Je souhaite réaliser une macro permettant de lister les fichiers contenus dans un dossier. Je ne cherche pas à lister les sous-dossiers. Pour cela je me sers de celle-ci, que j'ai trouvée sur Internet :
Sub Lister()
repertoire = "C:\Users\MH\Videos\Toto"
i = 2
nf = Dir(repertoire & "\*.*")
Do While nf <> ""
Cells(i, 1) = nf
nf = Dir '
i = i + 1
Loop
End Sub
Elle fonctionne.
Seulement je ne veux pas que le nom du dossier soit écrit en dur dans le code, je veux qu'il soit saisi par l'utilisateur à l'aide de la commande BrowseForFolder et je me sers de ce bot de code que j'ai trouvé sur Internet
Application.ScreenUpdating = False
Dim myPath As String, myFile As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
Chemin = oFolderItem.Path
MsgBox Chemin
Je crée donc la macro :
Sub Lister()
Application.ScreenUpdating = False
Dim myPath As String, myFile As String
Dim objShell As Object, objFolder As Object, oFolderItem As Object
Dim Chemin As String
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
On Error Resume Next
Set oFolderItem = objFolder.Items.Item
repertoire = oFolderItem.Path
i = 2 'jusqu'ici c'est bon
nf = Dir(repertoire & "\*.*") 'ici ça foire car nf est vide
MsgBox (nf)
Do While nf <> ""
Cells(i, 1) = nf
nf = Dir '
i = i + 1
Loop
End Sub
E mettant des MsgBox à différents endroits, je me suis rendu compte que repertoire prenait la bpnne valeur mais que nf était vide dès la première occurrence et que donc le listage ne pouvait fonctionner.
Quelqu'un voit-il ce qui cloche ?
Merci et bon dimanche.