Autres Modifier la réf dans un nom (gestionnaire - xl 2007)

sourcier08

XLDnaute Occasionnel
Bonjour à tous,

Je me tourne vers vous pour une aide sur le gestionnaire de nom (sous excel 2007).

Je crée une liste de mois de la cellule A1 à A12 (que j'ai renommé "liste_test") et je souhaiterai pouvoir modifier l'étendue de celle-ci en agissant directement en vba dans le gestionnaire de noms.
Cela fait longtemps que je n'ai plus touché à Excel et je suis bien bloqué sur ceci.

Je me suis déclaré quelques variables (utiles ou pas) mais c'est surtout de pouvoir mettre :

.RefersToR1C1 = (feuille variable) + cellule départ + cellule fin

Quelqu'un aurait une idée et explication pour moi ?

Merci d'avance et meilleurs voeux à vous.

VB:
Sub Macro6()

Dim cel As Range
Dim a As Byte
Dim b As String, c As String, d As String

Set cel = Range("A1:A" & Range("A1").End(xlDown).Row)
   
    a = 12
    b = Sheets(1).Range("A1").Address
    c = Sheets(1).Range("A1").End(xlDown).Address
    d = "=" & Sheets(1).Name & "!" & b & ":" & c
   
    With ActiveWorkbook.Names("liste_test")
        .Name = "test4"
        .RefersToR1C1 = d
    End With
End Sub
 
Dernière édition:

sourcier08

XLDnaute Occasionnel
Merci Efgé, mais je me suis certainement mal expliqué. Désolé !

C'est la partie .RefersToR1C1 que je souhaite modifier (modifier par vba la référence dans le gestionnaire de noms) en appliquant un variable feuille, une variable cellule de départ et une autre pour la cellule de fin.

Dans mon exemple, c'est feuille1, A1, A12

Je joins le fichier...
 

Pièces jointes

  • test_noms_gests.xlsm
    13.9 KB · Affichages: 1
Dernière édition:

Efgé

XLDnaute Barbatruc
Re
As tu testé la proposition ?
A part supprimer le nom si tu modifies plusieures fois la plage, je ne vois pas ce que tu attends...
VB:
Sub gest_noms_3()
Dim Rng As Range
Dim N As Name
  
Set Rng = Range("A1:A" & Sheets(1).Range("A1").End(xlDown).Row)
For Each N In ActiveWorkbook.Names
    If N = "test4" Then N.Delete
Next N
Rng.Name = "test4"
End Sub

Cordialement
 

Deadpool_CC

XLDnaute Accro
Bonsoir,

voici un exemple de mise à jour de plage associée à un nom du gestionnaire de noms que j'ai fait il y a quelques jours :)

ici je gère la mise à jour de la page des 3 noms qui servent à des listes (validations de données) et en plus, je tri les données dans ces plages :

A noter en ligne 1 de chaque j'ai le titre ... donc je l'exclus de la page

VB:
With Worksheets("Parametres")
        ThisWorkbook.Names("BasesSF").RefersTo = .Range(Range("L2"), Range("L100").End(xlUp))
        .Range("BasesSF").Sort  key1:=Range("L2"), order1:=xlAscending, Header:=xlNo
    
        ThisWorkbook.Names("DateDepart").RefersTo = .Range(Range("M2"), Range("M5000").End(xlUp))
        .Range("DateDepart").Sort key1:=Range("M2"), order1:=xlAscending, Header:=xlNo
        
        ThisWorkbook.Names("Site").RefersTo = .Range(Range("N2"), Range("N5000").End(xlUp))
        .Range("Site").Sort key1:=Range("N2"), order1:=xlAscending, Header:=xlNo
    End With
 

sourcier08

XLDnaute Occasionnel
Merci à vous deux.
Efgé, j'ai testé

cel.name = "test"

J'ai découvert 3 trucs amusants sur le coup. (le 7, la suite logique du 6 et le second nom) ;)

Pas très variable, pour moi, le range("A1:A...
Je cherche toute autre application possible. Le N renvoie comme mon d mais n'est pas utilisé au bon endroit.
Je cherche toujours... :(

Pour ta seconde proposition, je partais un peu dans cette optique mais pour un autre sujet (supprimer une ligne en fonction d'un nom d'une liste)
C'est une étape plus lointaine qui est prévue au programme. Donc, merci ! Je vais adapter à mon besoin à ce moment là.




Deadpool_CC, je verrai pour une adaptation avec un USF. Sûrement pratique !
Une bonne nuit de sommeil portera conseils (je vais y penser 3 jours :) )

Merci.
 

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 655
dernier inscrit
STA82700