XL 2013 Netoyer la liste de noms du gestionnaire de noms

FRYS

XLDnaute Nouveau
Bonjour à tous

je travail sur un classeur avec énormément de noms qui ont été définis (8143 exactement), dont la plus part sont obsolètes
J'aurai besoin de nettoyer cette liste. malheureusement les filtres du gestionnaires de noms sont limités.

A défaut de pouvoir / savoir filtrer directement dans le gestionnaire, j'ai tenter d'exporter la liste des noms dans une nouvelle feuille pour suprimer les noms obsolètes avec des filtres textuels.
Malheureusement je ne parviens pas à réimplanter cette liste dans le gestionnaire de noms.
(si j'utilise "Formules"/"Depuis sélection" les noms se réfèrent aux cellules de la liste que j'ai nétoyé, et non à leur cible)

Si vous savez filtrer finement directement dans le gestionnaire, ou réimplanter une liste de noms dans le gestionnaire de noms, vos conseils me seront précieux

Merci
 
Solution
Ca marche en effet.

j'ai modifié pour trier selon la cible du nom,
et j'ai ajouté un compteur pour controle

voila ce que ça donne

VB:
Sub SupNomGestion()
Dim NomGestion As Name
Dim nb As Integer
nb = 0
    For Each NomGestion In ActiveWorkbook.Names
        If NomGestion.RefersTo Like "*LISTE*" Then
        NomGestion.Delete 'tous les noms faisant référence à l'onglet "LISTE" sont suprimés
        nb = nb + 1
        End If
    Next NomGestion
MsgBox "VBA à suprimé " & nb & " noms"

End Sub

Merci

Phil69970

XLDnaute Barbatruc
Bonjour @FRYS , Gérard

Je te propose cet exemple :

VB:
Sub SupNomGestion()
Dim NomGestion As Name
    For Each NomGestion In ActiveWorkbook.Names
        If NomGestion.Name <> "Toto" Then NomGestion.Delete 'tous les noms seront supprimés sauf toto
    Next NomGestion
End Sub

*Attention le nom est sensible à la casse donc toto est différend de Toto

Merci de ton retour

@Phil69970
 

Cousinhub

XLDnaute Barbatruc
Bonsoir,
2 alternatives :
1/ D'après ta liste filtrée (supposant que tu as effacé les cellules contenant les noms à supprimer)
VB:
Sub supp_nom1()
Dim Nms As Name
For Each Nms In Names
    If IsError(Application.Match(Nms.Name, Columns(8), 0)) Then Nms.Delete
Next
End Sub

2/ Tous les noms en erreur
Code:
Sub sup_nom2()
Dim Nms As Name
For Each Nms In Names
    If Nms.RefersTo Like "*REF!*" Then Nms.Delete
Next
End Sub

Bonne soirée, et bon W-E
 

FRYS

XLDnaute Nouveau
Ca marche en effet.

j'ai modifié pour trier selon la cible du nom,
et j'ai ajouté un compteur pour controle

voila ce que ça donne

VB:
Sub SupNomGestion()
Dim NomGestion As Name
Dim nb As Integer
nb = 0
    For Each NomGestion In ActiveWorkbook.Names
        If NomGestion.RefersTo Like "*LISTE*" Then
        NomGestion.Delete 'tous les noms faisant référence à l'onglet "LISTE" sont suprimés
        nb = nb + 1
        End If
    Next NomGestion
MsgBox "VBA à suprimé " & nb & " noms"

End Sub

Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 984
Membres
103 079
dernier inscrit
sle