Effacer les noms définis sur une feuille

Comment effacer tous les noms (Names) d'une feuille Excel, mais pas tous ceux du classeur.

A) pour effacer les noms se référant à une plage de la feuille active définis par NomFeuilleActive!NomPlage

sub efface1()
 Dim N As Name
 With ActiveSheet
 For Each N In .Names
  N.Delete
 Next
 End With
 end sub

B) pour effacer les noms se référant à une plage de la feuille active définis par par NomPlage et NomFeuilleActive!NomPlage

sub Efface2()
 Dim nom As String
 nom = ActiveSheet.Name
 nc = Len(nom)
 For Each N In ActiveWorkbook.Names
  v = N.RefersTo
  If Mid(v, 2, nc + 1) = nom & "!" Then N.Delete
 Next N
 end sub

C) si tu désires supprimer seulement les noms contenus dans une plage particulière de la feuille, par exemple Range("C1:C4") (le Range("c1:C4") doit être totalement comprise dans la plage définie par le "NOM.)

sub efface3()
 
 With Worksheets("Feuil1")
 For Each n In .Parent.Names
  If TypeName(Evaluate(n.Name)) = "Range" Then
   If Union(.Range("C1:C4"), Range(n.Name)).Address = Range(n.Name).Address Then
    n.Delete
   End If
  End If
 Next
 End With
 
 end sub

D) Et si les 2 plages range("C1:C4") et Nom doivent être identiques, tu ajoutes un test comme ceci :

sub efface4()
 
 With Worksheets("Feuil1")
 For Each n In .Parent.Names
  If TypeName(Evaluate(n.Name)) = "Range" Then
   If Union(.Range("C1:C4"), Range(n.Name)).Address = Range(n.Name).Address And _
    Union(.Range("C1:C4"), Range(n.Name)).Address = .Range("c1:C4").Address Then
    n.Delete
   End If
  End If
 Next
 End With
 
 end sub

Auteurs : ,

Mots clefs associés à cette page : , , , ,