[Résolu]Modifier l'étendue d'un nom en VBA

mamyfik

XLDnaute Nouveau
Bonjour à tous!

Tout est dans le titre!

Je voudrais savoir si il est possible de modifier "l'étendue" ou "zone" d'un nom, c'est-à-dire la zone à laquelle il s'étend, en VBA.

Par exemple dans la feuille "UneFeuille", on aurait une plage de cellules nommée "Plage" et dont l'étendue serait "UneFeuille". Je voudrais modifier cette étendue pour qu'elle soit "Classeur" afin que "Plage" soit accessible dans tout le classeur sans spécifier "UneFeuille!Plage" mais en mettant juste "Plage". Et faire ceci en VBA bien sûr!
Serait-ce possible?

Voilà, j'espère avoir été clair! :/

Merci à vous!
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Modifier l'étendue d'un nom en VBA

Bonjour,
en fait c'est pas très clair..
si dans ta feuille "UneFeuille" tu as une range qui s'appelle "plage"
pour redimensionner cette plage, tu as plusieurs solutions selon ton besoin: exemple, en utilisant range("Plage").resize(lig, col)
ensuite.. si tu veux étendre cette plage à toute la feuille.... pourquoi ne pas utiliser directement le nom de cette feuille? Sheets("UneFeuille")
pour étendre ensuite à tout le classeur.. utilise le nom du classeur. tout simplement? workbook("Nomduclasseur")

Pour finir. avec un fichier exemple, ca permettrait de mieux cerner ton souci
 

job75

XLDnaute Barbatruc
Re : Modifier l'étendue d'un nom en VBA

Bonjour mamyfik, vgendron,

Voyez le fichier joint et cette macro dans le code de la feuille :

Code:
Private Sub OptionButton1_Change()
On Error Resume Next
Me.Names("Plage").Delete
ThisWorkbook.Names("Plage").Delete
IIf(OptionButton1, Me, ThisWorkbook).Names.Add _
  "Plage", Range("A2", [A65536].End(xlUp))
ActiveCell.Activate
End Sub
Le nom Plage est défini soit dans la feuille soit dans le classeur.

A+
 

Pièces jointes

  • Nom défini(1).xls
    38.5 KB · Affichages: 216

vgendron

XLDnaute Barbatruc
Re : Modifier l'étendue d'un nom en VBA

Hello tous..
et merci Job.. d'une: je n'avais donc pas compris la question, de deux, je n'avais jamais vu qu'on pouvait modifier l'étendue d'une plage nommée..
je dormirai encore moins bete ce soir..;-)
 

Abel

XLDnaute Accro
Re : Modifier l'étendue d'un nom en VBA

Bonjour mamyfik, le fil,

Je suis peut être à côté de la plaque.

Mais peut être en passant par des plages nommées.

Voir exemple joint. Ces plages s'adapteront automatique au fur et à mesure de l'ajout de nouvelles données.
Corollaire, il faut une clé primaire. Dans mon exemple, la première colonne (N°) doit toujours être remplie.
Pour voir le fonctionnement des plages nommées, va dans le menu Insertion/Nom/définir (Excel 2003).
Ces plages peuvent être réutilisées dans des USF, par exemple.

En espérant que cela dépanne.

Abel.

Edit : oups pas rafraichi ... Tiens, belle solution pour le faire par macro.
 

Pièces jointes

  • Exple_mayfik_plages_nommees.xls
    16.5 KB · Affichages: 178
Dernière édition:

job75

XLDnaute Barbatruc
Re : Modifier l'étendue d'un nom en VBA

Re,

Le nom Plage peut être défini par une formule (quelconque) qu'on mémorise :

Code:
Private Sub OptionButton1_Change()
Dim nom1 As Name, nom2 As Name, formule As String
On Error Resume Next
Set nom1 = Me.Names("Plage"): Set nom2 = Me.Parent.Names("Plage")
formule = nom1.RefersTo: nom1.Delete
formule = nom2.RefersTo: nom2.Delete
IIf(OptionButton1, Me, Me.Parent).Names.Add "Plage", formule
ActiveCell.Activate
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Nom défini(2).xls
    39.5 KB · Affichages: 152

Discussions similaires

Statistiques des forums

Discussions
312 799
Messages
2 092 226
Membres
105 297
dernier inscrit
Cadnov