Bonsoir,
Je me suis permis d'ajuster le code pour intercepter l'erreur quand on clique sur "Annuler" :
Dim FàOuvrir, Num, chemin, k, M
Sub ListeDesDocDansDossier()
FàOuvrir = Application.GetOpenFilename(, , , , True)
If Not IsArray(FàOuvrir) Then
If FàOuvrir = False Then Exit Sub
End If
Num = 1
Cells(3, 11).Value = FàOuvrir(Num)
chemin = Cells(3, 11).Value
For k = 63 To 1 Step -1
M = Mid(chemin, k, 1)
If M = "\" Then Exit For
Next k
Cells(3, 11).Value = Left(chemin, k - 1)
End Sub
Un petit conseil : évitez d'utiliser les accents et autre caractères spéciaux français dans le code, car celui-ci voyage très mal dans les versions non francophones (éèàïÎçË...)
J'ai une solution pour ouvrir un dossier, mais soit la recherche commence au niveau le plus haut (Bureau), soit à un endroit précis (par exemple C:\Mes Documents, mais dans le second cas, il n'est pas possible de revenir aux niveaux inférieurs (C:\ par exemple), ni de changer de disque :
Sub RechercheDossier()
Cells(3, 11).Value = choisirFichier()
End Sub
Function choisirFichier()
Dim objShell, objFile, chemin
Set objShell = CreateObject("Shell.Application")
Set objFile = objShell.BrowseForFolder(&H0&, "Choisissez un fichier", &H4000)
' Set objFile = objShell.BrowseForFolder(&H0&, "Choisissez un fichier", &H4000, "C:\")
On Error Resume Next
chemin = objFile.ParentFolder.ParseName(objFile.Title).Path & ""
If objFile.Title = "" Then
chemin = ""
End If
choisirFichier = chemin
End Function
A toi de voir la meilleure méthode en fonction de ton besoin.