Erreur 1004 lors suppression noms

Gael

XLDnaute Barbatruc
Bonjour à tous,

Je voudrais effacer des noms de requêtes spécifiques à chaque feuille de calcul (il faut se positionner sur une feuille pour voir le nom avec insertion - nom - définir).

Manuellement, cela ne pose aucun problème mais dans une macro, le nom n'est effacé que si la feuille est positionnée en premier dans le classeur.

J'ai essayé sans succès différentes possibilités avec select, activate, range ou autre sans comprendre ce mystère.

Je vous joins un exemple simple.

Merci de votre aide.

@+

Gael [file name=Sup_noms.zip size=50051]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Sup_noms.zip[/file]
 

Pièces jointes

  • Sup_noms.zip
    48.9 KB · Affichages: 20

Davidc57

XLDnaute Occasionnel
Bonsoir Gael,

En fait, les noms définis ne sont pas rattachés à une feuille en particulier mais au classeur entier.

Donc tu ne peux pas mettre deux fois le même nom, même si c'est sur 2 feuilles différentes.

Ainsi, tu supprime le nom sans te soucier de la feuille :

ActiveWorkbook.names('David').Delete
ActiveWorkbook.names('Gael').Delete


A+
David
 

Gael

XLDnaute Barbatruc
Bonsoir David,

Merci de ta réponse.

En fait c'est ce que j'avais fait au début mais ça donne la même erreur. As-tu essayé avec les feuilles et les noms de mon exemple?

J'ai fait aussi un autoenregistrement à partir d'une suppression manuelle mais c'est aussi le même problème quand on lance la macro.

Pour la première partie de ta réponse, je ne suis pas tout à fait d'accord:

lorsque tu copie une feuille d'un classeur sur un autre et qu'un même nom est défini, tu as la possibilité de conserver ce nom pour chaque feuille avec une définition différente. Dans ce cas, le nom de la feuille apparaît dans la partie droite de la fenêtre insertion - nom - définir.

Si tu reprends les feuilles de mon exemple, sur chaque feuille, tu ne vois que le nom associé à la feuille avec le nom de la feuille à droite.

@+

Gael
 

Davidc57

XLDnaute Occasionnel
Rebonsoir,

Tu as raison, quand j'ai essayé chez moi, j'ai créé un nom sans l'associé à une feuille (je n'ai pas le nom de la feuille à droite lorsque je lance mon code et donc ce que j'ai écrit avant fonctionne.

Mais dans ton cas, je ne vois pas comment faire. Ca pose problème le fait que le nom soit attaché à la feuille !!

Peux-tu éviter cela ?


Tu dis : 'lorsque tu copie une feuille d'un classeur sur un autre...'

Cela signifie t-il que les noms sont déjà définis dans la feuille du premier classeur ?

Peux-tu copier la feuille sans les définition de noms, et définir ensuite ceux-ci dans le 2e classeur (celui qui recoit) en VBA ?

J'espère t'avoir aider.

David
 

Gael

XLDnaute Barbatruc
Bonsoir Hervé, bonsoir David,

En fait, ces noms correspondent à des requêtes et sont générés pour chaque feuille.

Hervé, ton code marche très bien, mais dans l'exemple, je n'ai mis que les noms qui posent problème et il y en a bien sûr beaucoup d'autres à conserver. à la rigueur, serait-il possible de sélectionner les noms finissant par '_AP'?

Mais je ne comprends toujours pas pourquoi ça ne marche pas alors que manuellement il n'y a aucun souci.

Merci en tous cas de vous être penché sur ce problème.

@+

Gael
 
M

Mytå

Guest
Salut le Forum

A essayer directement

Sub names()

Sheets('MP_VALS').names('Mat_Prem_AP').Delete
Sheets('Fourn_VALS').names('Four_Mat_prem_AP').Delete
Sheets('Mix_Vals').names('MIX_VALS_AP').Delete

End Sub

Mytå
 

Gael

XLDnaute Barbatruc
Bonjour à tous,

Merci Myta et hervé pour ces dernières solutions qui fonctionnent parfaitement.

Grâce à vous tous, j'ai bien compris le principe et je pense pouvoir gérer maintenant tous les cas tordus de ce style!

Merci encore de votre aide.

@+

Gael
 

Statistiques des forums

Discussions
312 231
Messages
2 086 430
Membres
103 207
dernier inscrit
Michel67