Sub Test()
For Each Nom In Array("Zone3", "Zone2", "Zone1", "Feuil1!Zone1", "Feuil1!Zone3")
MsgBox Nom & vbLf & Is_Exist(Nom)
Next
End Sub
Function Is_Exist(Nom As Variant) As Boolean
If InStr("!", Nom) Then
' Recherche du nom dans une feuille précise
Feuille = Split(Nom, "!")
For Each Elem In Sheets(Feuille).Names
If UCase(Elem.Name) = UCase(Feuille & "!" & Nom) Then
Is_Exist = True
Exit For
End If
Next
Else
' Recherche du nom dans la feuille active
For Each Elem In ActiveSheet.Names
If UCase(Elem.Name) = UCase(ActiveSheet.Name & "!" & Nom) Then
Is_Exist = True
Exit For
End If
Next
' Recherche du nom dans le classeur
If Not Is_Exist Then
For Each Elem In ThisWorkbook.Names
If UCase(Elem.Name) = UCase(Nom) Then
Is_Exist = True
Exit For
End If
Next
End If
End If
End Function