supprimer les noms des plages de cellules

Sofiane Boukecha

XLDnaute Nouveau
Bonjour tout le monde,

je voudrai supprimer les noms des plages de cellules qui ne sont pas visible sur le "Gestionnaire des Noms"

par ce qu'à chaque fois j'ouvre mon classeur, il se met à jour avec des liaisons d'autres classeurs (lent), j'ai vérifié les noms de plages dans le "Gestionnaire de Nom", j'ai rien trouvé d'anormal,
mais quand j'ai vérifié à l'aide d'un code VBA, le résultat était surprenant: PLEIN de noms qui font référence à des plages sur d'autres classeurs.
je veux supprimer ces noms invisibles.
merci


code VBA

Sub test()
Dim N As Name, A As Integer
Dim Sh As Worksheet
Set Sh = ThisWorkbook.Worksheets.Add
With Sh
.Range("A1") = "Nom"
.Range("B1") = "Plage de cellules"
A = 1
For Each N In ThisWorkbook.Names
A = A + 1
.Range("A" & A) = N.Name
.Range("B" & A) = "'" & N.RefersToLocal
Next
.Range("A1").CurrentRegion.EntireColumn.AutoFit
End With
End Sub
 

Sofiane Boukecha

XLDnaute Nouveau
bonjour Job75, et merci à vous,

j'ai essayé votre solution, elle marche bien mais avec 2 inconvénient:
- votre code ne supprime pas les noms qui ont une erreur de référence (plage déjà supprimée)
- il y'a des noms qui font références a d'autre classeur , mais que j'en ai encore besoin. (si c'est pas possible, c'est pas grave, je vais les réinsérer)

merci bcp
 

job75

XLDnaute Barbatruc
Re,

Voyez cette autre solution :
Code:
Sub Epuration()
Dim n As Name
For Each n In ThisWorkbook.Names
If IsError(ExecuteExcel4Macro(Mid(n.RefersToR1C1, 2))) Then n.Delete
Next
End Sub
Cela dit s'il n'y a pas trop de noms à supprimer il vaut mieux les supprimer manuellement, on voit ce qu'on fait.

Il n'est absolument pas normal qu'il y ait comme vous dites PLEIN de noms à supprimer.

A+
 

Sofiane Boukecha

XLDnaute Nouveau
merci à vous,
mais comment les supprimer manuellement alors que les noms ne sont pas visibles sur le "gestionnaire de nom"??

pour la solution, j'ai porté pour la première qui supprime tout les noms faisant références à d'autres classeurs,
pour les erreurs de références, j'ai créé un autre code en modifiant le votre ("[" remplacé par #REF!)

Sub EpurationRef()
Dim n As Name
For Each n In ThisWorkbook.Names
If InStr(n.RefersTo, "#REF!") Then n.Delete
Next
End Sub
 

Sofiane Boukecha

XLDnaute Nouveau
votre code est vraiment à sa place, maintenant tout les noms sont visibles, je peux supprimer ceux qui sont de trop.
mon classeur est devenu plus souple et plus léger.
merci beaucoup à vous.
pourquoi certains étaient cachés? ça j'en ai aucune idée, l'essentiel maintenant vous m'avez donné une solution.

merci encore une fois
 

Discussions similaires

Réponses
6
Affichages
130
Réponses
46
Affichages
839

Statistiques des forums

Discussions
312 165
Messages
2 085 884
Membres
103 017
dernier inscrit
pierre noyer