Re,
Bon au final avec pas mal de bidouille en cherchant sur le net j'ai trouvé une combine. Je cherche un fichier au lieu d'un dossier, récupère son chemin puis supprime le nom du fichier pour obtenir le chemin du dossier. C'est surement pas le plus simple et je ne comprends clairement pas la partie recherche du code, mais ça a la mérite de fonctionner, voici mon code au cas ou cela intéresse quelqu'un :)
Option Explicit
Sub Recherche_Dossier()
'Déclaration des variables
Dim Lien_Fichier As String
Dim Répertoire As String
Dim Fso As Object
Dim Dossier_Départ As Object
'Définition des objects
Set Fso = CreateObject("Scripting.FilesystemObject")
'Choix du répertoire de départ
Répertoire = "Z:\Commercial\2 - Commandes\" & Year(Date) & "\"
'Recherche des fichiers
Set Dossier_Départ = Fso.GetFolder(Répertoire)
Lien_Fichier = Empty
Recherche_Fichier Fso, Dossier_Départ, Nom_Fichier, Lien_Fichier
If Lien_Fichier = Empty Then
MsgBox "Dossier non trouvé."
Else
Annexe.Range("C1") = Left(Lien_Fichier, Len(Lien_Fichier) - 32)
End If
'Réinitialisation des objets
Set Fso = Nothing
End Sub
Sub Recherche_Fichier(Fso As Object, Dossier As Object, Nom1 As String, Nom2 As String)
'Déclaration des variables
Dim Sous_Dossier As Object
Dim Fichier As Object
Dim Nom As String
Dim Extension_Fichier As String
'Recherche fichiers
For Each Fichier In Dossier.Files
Extension_Fichier = Fso.GetExtensionName(Fichier.Path)
If Nom1 = Fichier.Name Then Nom2 = Fichier.Path: Exit For
Nom = Replace(Fichier.Name, "." & Extension_Fichier, "") 'supprime l'extension du nom
If Nom = Nom1 Then Nom2 = Fichier.Path: Exit For
' If MsgBox("Retenez-vous ce nom de fichier avec son extension ? " & Fichier.Name, vbYesNo, "Question") = vbYes Then nom2 = Fichier.Path: Exit For
'End If
Next Fichier
'Recherche sous-dossier
For Each Sous_Dossier In Dossier.SubFolders
If Nom2 <> Empty Then Exit For
If Sous_Dossier.Attributes = vbDirectory + vbSystem + vbHidden Then Exit For
Recherche_Fichier Fso, Sous_Dossier, Nom1, Nom2
Next
End Sub