Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim GSAsFnm As Variant
If Target.Address = "$B$1" Then
GSAsFnm = Target.Value
On Error Resume Next
ChDrive GSAsFnm: ChDir Left(GSAsFnm, InStrRev(GSAsFnm, "\") - 1)
On Error GoTo 0
GSAsFnm = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Name, _
FileFilter:="Excel avec macro,*.xlsm")
If VarType(GSAsFnm) = vbString Then Target.Value = GSAsFnm
End If
End Sub