Resize d'un plage variable nommée

joel31

XLDnaute Junior
Bonjour Le Forum,

Je bute depuis ce matin sur une chose qui me paraissait assez simple pourtant.

J'ai une plage nommée de hauteur de lignes variable, "CDD", que je voudrais renommer en supprimant la dernière colonne de droite.
Je m'explique par l'exemple ci-joint :

A3:D6 = "CDD"

je souhaiterais renommer la plage "CDD" en A3:C6 (on renomme avec une colonne en moins.)

Il faut savoir que la plage ne se trouve pas toujours en A3:D6 et que sa hauteur est variable A1: D3 par ex.

Je dois dire que je tourne en rond sans réussir à trouver comment reculer d'une colonne et nommer la plage.

Vote aide serait bienvenue.

Cordialement

Joël
 

Fichiers joints

Lean

XLDnaute Junior
Re : Resize d'un plage variable nommée

Bonjour

vous pouvez procéder ainsi

Code:
Sub Macro1()
Dim plage As Range
Set plage = Sheets(1).Range("a3:d6").Resize(4, 3)
ActiveWorkbook.Names("CDD").Delete
ActiveWorkbook.Names.Add Name:="CDD", RefersTo:=plage
End Sub
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Resize d'un plage variable nommée

Bonsoir à tous


Autre proposition :​
VB:
Sub Macro9()
Dim Nom$
    Nom = "CDD"
    With Range(Nom): Names.Add Nom, .Resize(.Rows.Count, .Columns.Count - 1): End With
End Sub

Bonne nuit !


ROGER2327
#6694


Samedi 7 Tatane 140 (Saint Biribi, taulier - fête Suprême Quarte)
2 Thermidor An CCXXI, 9,5358h - bouillon-blanc
2013-W29-6T22:53:10Z
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Resize d'un plage variable nommée

Bonsoir joel31,

Un essai:
Code:
Sub RenommerCDD()
Dim NewDef As Range

Set NewDef = ThisWorkbook.Names("CDD").RefersToRange
Set NewDef = NewDef.Resize(, NewDef.Columns.Count - 1)
ActiveWorkbook.Names.Add Name:="CDD", RefersTo:=NewDef

End Sub
 

joel31

XLDnaute Junior
Re : Resize d'un plage variable nommée

Bonjour RogerR2327,

(C'est le nom d'un robot de Star War ça non ? :), bonjour le fil et à tous ceux qui m'ont répondu,

Les 3 méthodes fonctionnent très bien, celle de Lean ne prend pas en compte la variable de hauteur:mad:, la réponse de Mapomme est très bien également;), celle de Roger est plus concise.:cool:

Merci pour vos réponses et bon dimanche à vous.

Bien cordialement

Joël
 

joel31

XLDnaute Junior
Re : Resize d'un plage variable nommée

RE-bonjour le Forum, le Fil,

J'ai une petite question complémentaire.

Dans mon fichier, j'ai plusieurs champs nommés, et je souhaite les renommer en leur donnant un nombre de colonne fixe de E à N, mais en gardant la variable de hauteur aléatoire.

Comment puis je modifier la macro de Roger par exemple, dans ce cas là ?

Je vous remercie pour votre aide toujours précieuse.

Bien cordialement

Joël
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Resize d'un plage variable nommée

(re) Bonjour joel31,

Un essai (si j'ai bien compris la demande):
VB:
Sub RenommerCDD()
Dim NewDef As Range

  Set NewDef = ThisWorkbook.Names("CDD").RefersToRange
  Set NewDef = NewDef.Offset(, Range("E1").Column - NewDef.Column).Resize(, Range("E1:N1").Columns.Count)
  ActiveWorkbook.Names.Add Name:="CDD", RefersTo:=NewDef

End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Resize d'un plage variable nommée

(re),

Ou en plus court:
VB:
Sub RenommerCDD()
Names.Add "CDD", Names("CDD").RefersToRange.Offset(, 5 - Names("CDD").RefersToRange.Column).Resize(, 10)
End Sub
 

joel31

XLDnaute Junior
Re : Resize d'un plage variable nommée

Bonjour MaPomme, le fil

J'ai juste modifié une ligne, et ça fonctionne très bien :
Code:
Sub RenommerCDD()
Dim NewDef As Range

  Set NewDef = Range("CDD")
  Set NewDef = NewDef.Offset(, Range("E1").Column - NewDef.Column).Resize(, Range("E1:N1").Columns.Count)
  ActiveWorkbook.Names.Add Name:="CDD", RefersTo:=NewDef

End Sub
Un grand merci à toi et à Roger pour votre aide.

Je vais quand même chercher une solution à la proposition de Roger (maitre Jedi) pour ma simple curiosité intellectuelle de petit scarabée :D

Bon dimanche,
Bien cordialement

Joël.
 

ROGER2327

XLDnaute Barbatruc
Re : Resize d'un plage variable nommée

Re...


RE-bonjour le Forum, le Fil,

J'ai une petite question complémentaire.

Dans mon fichier, j'ai plusieurs champs nommés, et je souhaite les renommer en leur donnant un nombre de colonne fixe de E à N, mais en gardant la variable de hauteur aléatoire.

Comment puis je modifier la macro de Roger par exemple, dans ce cas là ?

Je vous remercie pour votre aide toujours précieuse.

Bien cordialement

Joël
Pour renommer sans changer le nombre de colonnes :​
VB:
Sub Macro10()
Dim Nom$
    Nom = "CDD"
    With Range(Nom): Names.Add Nom, .Resize(.Rows.Count, .Columns.Count): End With
End Sub
peut-être ? Ou bien :​
VB:
Sub Macro11()
Dim AncienNom$, NouveuNom$
    AncienNom = "CDD"
    NouveuNom = "XXX"
    With Range(AncienNom)
        Names.Add NouveuNom, .Resize(.Rows.Count, .Columns.Count)
        Names(AncienNom).Delete
    End With
End Sub


ROGER2327
#6696


Dimanche 8 Tatane 140 (Susception du Croc à Merdre - fête Suprême Seconde)
3 Thermidor An CCXXI, 3,7071h - melon
2013-W29-7T08:53:49Z
 

joel31

XLDnaute Junior
Re : Resize d'un plage variable nommée

Bonjour MaPomme, le Fil,

Là c'est top de chez top !:cool:
C'est la même construction que la proposition initiale de Roger, et j'ai mieux compris le cheminement.

Excellent dimanche à tous
Bien cordialement
Roger

PS : Tu peux maintenant changer ton identifiant en Luc .............. (Skywalker) :eek:
Bon je sors !

Oups, le temps de répondre, Roger était passé par là !
C'est excellent aussi Roger, un autre grand merci à toi.

Bien cordialement

Joël
 

ROGER2327

XLDnaute Barbatruc
Re : Resize d'un plage variable nommée

Suite...


En fait, je ne suis pas sûr d'avoir bien compris... Peut-être ceci ?​
VB:
Sub Macro12()
Dim Nom$
    Nom = "CDD"
    With Range(Nom): Names.Add Nom, .Resize(.Rows.Count, .Columns.Count).Offset(, Columns("E").Column - .Column): End With
End Sub
ou encore :​
VB:
Sub Macro13()
Dim Nom$
    Nom = "CDD"
    With Range(Nom): Names.Add Nom, .Resize(.Rows.Count, Columns("E:N").Count).Offset(, Columns("E").Column - .Column): End With
End Sub

ROGER2327
#6697


Dimanche 8 Tatane 140 (Susception du Croc à Merdre - fête Suprême Seconde)
3 Thermidor An CCXXI, 3,8407h - melon
2013-W29-7T09:13:03Z
 

joel31

XLDnaute Junior
Re : Resize d'un plage variable nommée

Bonjour Roger,

Si si tu as bien compris :(
Code:
Sub Macro13()
Dim Nom$
    Nom = "CDD"
    With Range(Nom): Names.Add Nom, .Resize(.Rows.Count, Columns("E:N").Count).Offset(, Columns("E").Column - .Column): End With
End Sub
C'est exactement ce que je souhaite, et dans le droit fil de ta première proposition.

Merci à toi et à MaPomme encore une fois.

Bien cordialement

Joël
 

ROGER2327

XLDnaute Barbatruc
Re : Resize d'un plage variable nommée

Re...


Bonjour Roger,

Si si tu as bien compris :(
(...)
Tant mieux !​


Bon dimanche à tous.


ROGER2327
#6698


Dimanche 8 Tatane 140 (Susception du Croc à Merdre - fête Suprême Seconde)
3 Thermidor An CCXXI, 4,0127h - melon
2013-W29-7T09:37:49Z
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas