bonsoir,
celles qui ont {...} : Non
Celles qui ont =#REF!#REF! Oui.
Les autres ils faut les éplucher une par une...
Pourquoi dois tu impérativement les supprimer ?
Tu pourrais les lister sur une feuille à part avec leur contenu...
Après tu ferais la recherche dans ton code... Mais ça ne te dira pas si tu les utilises dans des formules...
Pour les lister sur une feuille à part...
Sub test()
Dim nms, wks, r
Set nms = ActiveWorkbook.Names
Set wks = Worksheets("Feuil1")
On Error Resume Next
For r = 1 To nms.Count
wks.Cells(r, 2).Value = nms(r).Name
'wks.Cells(r, 3).Value = nms(r).RefersToRange.Address
Next
End Sub
Attention la ligne ...RefersToRange.Address donne un résultat exploitable uniquement pour les noms de cellules définis "en dur"
Pour tous les noms complexes (Formules, range définis avec Décaler... et autre array Complexes cette ligne ne renvoie rien d'exploitable. Il vaut donc mieux passer par le Gestionnaire si tu as des définitions un peu... chiadées. !
Quand on exploite (à raison) de nombreux noms, il peut être utile de les définir Visible = False : Comme ça ils n'encombrent pas le Gestionnaire de Nom mais tu peux quand m^me t'en servir. Dans ce cas il est de bon ton de les préfixer. (par exemple par "a_" pour ceux qui sont relatif à telle feuille... ou par b_ pour ceux qui sont relatif à une autre feuille). Ainsi on peut les masquer ou démasquer à volonté dans une boucle For... en les filtrant sur Left(nms.Name, 2)...
A+