Comment modifier la portée d’une plage nommée en vba
Bonjour,
Quand on créer une plage nommée par le Gestionnaire de noms il offre la possibilité de spécifier la portée pour le Classeur ou [worksheet name]. Mais si ensuite je désire modifier l'étendue, la liste déroulante est grisée. Et dans ce cas il faut supprimée le nom avec étendue classeur et créer un nouveau avec l’étendue [worksheet name] et la même référence.
Bien sûr si il faut modifier qu'une seule portée aucun intérêt de faire un macro, par contre dans le cas de plusieurs, voici ma petite macro qui permet de modifier l’étendue [worksheet name] en étendue classeur de tous les noms de la feuille active :
Code:
1 2 3 4 5 6 7 8 9 10
| Sub ModifÉtenduNomsFeuille()
Dim Nom, Feuille, RangeRefersTo
For Each N In ActiveSheet.Names 'tous les noms de la feuilles actives
Nom = Mid(N.Name, InStr(N.Name, "!") + 1)
Feuille = Left(N.RefersTo, InStr(N.RefersTo, "!") - 1)
RangeRefersTo = "" & N.RefersTo & ""
ActiveWorkbook.Names(N.Name).Delete
ThisWorkbook.Names.Add Name:=Nom, RefersTo:=RangeRefersTo
Next N
End Sub |
Mais comment vérifier que le nom existe et faire l’inverse c’est-à-dire modifier l’étendue classeur en étendue [worksheet name].
J’ai passé beaucoup temps et malgré mes recherches je n’ai pas pour trouver solution.
Merci d’avance pour vos aides er réponses.