Salut BlackAdder,
Voici le dernier code avec les variables déclarées :
Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
dim Rep as string, RepFinal as string, dossier as string
cancel = True
Rep = "\\FOR-FSPARIP-01V\Utilisateurs\Commun\Distribution users\Dossier machine\Planification contrôles réglementaires\PONTS\Contrôles réglementaires\2021\"
If target.Column = 16 Then
dossier = Application.VLookup(target.Value, Range("correspondance"), 2, 0)
If IsError(dossier) Then dossier = ""
RepFinal = Rep & dossier
If Dir(RepFinal, vbDirectory) = "" Or RepFinal = Rep Then MsgBox "Renseignez un dossier existant en P", 16: Exit Sub
If Sonder(RepFinal, target.Offset(0, -2).Value) = 0 Then
'MsgBox "Aucun fichier trouvé", 16
if msgbox("Voulez-vous ouvrir le dossier parent ?", vbyesno, "Ouvrir l'explorateur") = vbyes then
Shell Environ("WINDIR") & "\explorer.exe " & left(Rep, len(Rep) - 1), vbNormalFocus
end if
end if
End If
End Sub
Function Sonder(Repertoire$, Keyword$) As Long
Dim t(), sFilename as string, n as long, i as long
sFilename = Dir(Repertoire & "\", vbNormal + vbDirectory)
Do While sFilename <> ""
If Not sFilename Like "*.*" Then
n = n + 1: ReDim Preserve t(1 To n)
t(n) = Repertoire & "\" & sFilename
ElseIf sFilename Like "*" & Keyword & "*.pdf" Then
Sonder = Sonder + 1
CreateObject("Shell.application").Open Repertoire & "\" & sFilename
End If
sFilename = Dir
Loop
If n > 0 Then
For i = LBound(t) To UBound(t)
if not t(i) like "*\Rapports provisoires" then Sonder = Sonder + Sonder(CStr(t(i)), Keyword)
Next i
End If
End Function
Cdlt,