Bonjour à tous,
Après avoir épluché les forums et autres tutoriaux, je sèche encore :/
Mon problème est le suivant: j'ai des classeurs qui contiennent foule de noms, tous invalides car référençant des liens externes qui ne me sont pas accessibles. Pour mes travaux, j'ai besoin de nettoyer complètement ces feuilles de tous les noms, y compris les noms automatiques qu'excel ajoute...
Pour ce faire je tente évidemment le code suivant (merci les forums ;-) ):
C'est assez rudimentaire et non optimal... mais ce n'est pas le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Sub deleteAllNames()Dim nm As Name Dim countD As Integer Dim countH As Integer Dim totalNbrNames As Integer countD = 0 countH = 0 totalNbrNames = ActiveWorkbook.Names.count ' First make all names visible... For Each nm In ActiveWorkbook.NamesEnd Subnm.Visible = True countH = countH + 1Next nm ' ... Then delete them one by one. For Each nm In ActiveWorkbook.Namesnm.Delete countD = countD + 1Next nm MsgBox "Unhidden : " & countH & " names." & vbCrLf & _"Deleted : " & countD & " names." & vbCrLf & _ "On a total of " & totalNbrNames & " names."
Le problème c'est le nm.Delete : Il échoue systématiquement sur les noms automatiques (genre "__123Graph_AC04C ALL-L1"). Ce petit code supprime tous les noms, sauf ceux-ci, les automatiques (ou built-in chez les anglais). J'ai une erreur de type 1004 ("The name that your entered in not valid.") qui semble t il serait dûe à des conflits entre objets)
Impossible alors de supprimer ces noms automatiques...
En revanche, ces noms - une fois visibles - se suppriment très bien lorsque je procède manuellement avec le gestionnaire de noms ! Et là, aucun conflit, aucun warning, tout marche très bien !
D’où ma question: si on peut le faire manuellement, n'y a t il pas un moyen de le faire automatiquement ??
Merci à tous, bonne journée,
Alexandre
Partager