Sub Test()
Dim Nme As Name
For Each Nme In ActiveWorkbook.Names
If PréfixeFeuille(Nme.Name) <> PréfixeFeuille(Mid$(Nme.RefersTo, 2)) Then
If MsgBox(Nme.Name & " " & Nme.RefersTo & vbLf & "à supprimer ?", _
vbYesNo) = vbYes Then Nme.Delete
End If
Next Nme
End Sub
Private Function PréfixeFeuille(ByVal Z As String) As String
PréfixeFeuille = Left$(Z, PosPExcla(Z))
End Function
Private Function PosPExcla(ByVal Z As String) As Long
Rem. Le nom de feuille peut contenir "!", et même "'!", ou commencer par "!", pourquoi pas, mais on ne peut
' se contenter de chercher tout simplement le dernier "!" car la suite de Z peut aussi contenir "#REF!" !
If Left$(Z, 1) = "'" Then PosPExcla = InStr(Replace(Mid$(Z, 2), "''", "??"), "'!") + 2 Else PosPExcla = InStr(Z, "!")
End Function