XL 2016 Copie d'une feuille : effet sur les plages nommées

F22Raptor

XLDnaute Impliqué
Bonjour à tous,
J'ai une feuille "MaFeuille", avec des données et des plages nommées (prenons en une : MaPlage).
Dans le gestionnaire de noms, on voit "MaPlage", "Fait Référence à : MaFeuille!A1:C12", avec l'étendue "Classeur".

Quand on fait une copie de MaFeuille, on a une nouvelle feuille : NouvelleFeuille
Les noms sont conservés, le "fait référence" s'est adapté, mais l'étendue s'est modifiée :
Une plage "MaPlage" est apparue, "Fait Référence à : NouvellFeuille!A1:C12", avec l'étendue "NouvelleFeuille"

Quand on clique sur MODIFIER pour changer le nom de MaPlage en MaPlage2, avec étendue "Classeur", on n'a pas accès à l'étendue.
Faut-il supprimer chaque nom de NouvelleFeuille, et le recréer avec la bonne étendue, un par un ? (fastidieux et risque d'erreur avec 30 noms !) ?

Merci !

EDIT : il y a peut-être un truc à faire en VBA.
Une boucle qui prend chaque plage nommée.
Si Etendue = "NouvelleFeuille" et Gauche("FaitRéférenceA" , 15) = "NouvelleFeuille"
Alors
1- Créer Plage Nommée = NomDeLaPlage & "2", avec le même "FaitRéfA" et Etendue = Classeur
2- Effacer NomDeLaPlage

De mémoire, quand on crée une plage par VBA, on utilise RefersTo , pour le "FaitRéfA", mais comment fixe t-on l'étendue ?
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Bonjour,

mais comment fixe t-on l'étendue ?
Pour une étendue à la feuille, le nom de la feuille doit apparaître dans le nom :
Application.Names.add "'Feuil1'!Plage",Feuil1.Range("A1:A10")
Ne pas oublier les ' si le nom de la feuille contient des espaces.
Pour une étendue au niveau classeur :
Application.Names.add "Plage2",Feuil1.Range("A1:A10")

Mais quoi qu'il en soit il faut supprimer le nom existant (étendue feuille) avant de le recréer pour une étendue classeur. Et lycée de Versailles.

Cordialement
 

Discussions similaires

Réponses
13
Affichages
659