nommer un champs via macro

titcoeur

XLDnaute Occasionnel
Bonjour,

Une fois de plus je fais appel à l'équipe.

Une macro crée un champs dans ma feuille excel.
Ce champs est de taille variable.

J'aimerais que ma macro assigne un nom à ce champs dans la feuille excel.
Est-ce possible ?


J'ai essayé via enregistrement de macro et ça donne ceci ...


Sub macro1
Selection.CurrentRegion.Select
ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=Sheet1!R5C2:R9C3"
End Sub

Ca marche bien dans un cas, mais quand mon champs change de taille, ce code n'est plus correct.
Ce qui ne m'arrange pas car je dois donner une adresse de type R1C1.
Ce que je voudrais est qu'il nomme la "currentRegion" , TEST.

Merci d'avance pour votre aide
 

jp14

XLDnaute Barbatruc
Re : nommer un champs via macro

Bonjour

Ci joint un fichier avec des macros pour gérer les noms.

Une macro pour effacer les noms
Une macro pour nommer les colonnes, avec formule "decaler"

JP
 

Pièces jointes

  • nomcol.zip
    10.1 KB · Affichages: 102
Dernière édition:

titcoeur

XLDnaute Occasionnel
Re : nommer un champs via macro

Merci JP14, je pense que cela va répondre à la question ...
même si je ne suis pas encore assez calée pour comprendre à la première lecture, helas.


J'aurais imaginé qu'il existait une façon "simple" de programmer


prendre le champs selectionné
et le nommer "untel"

mais apparemment on est obligé de passer par l'adressage mouvant , ce qui n'est pas mon fort.

mais je vais essayer.

Encore Merci
 

jp14

XLDnaute Barbatruc
Re : nommer un champs via macro

Bonjour

Ci joint le fichier avec des macros et une formule pour nommer une zone de deux colonnes.
Lorsque l'on utilise la fonction "decaler" on introduit la fonction "NB.VAL" qui indique le nombre de valeur dans une colonne, comme il y a deux colonnes B et C cela pose un problème.

A tester

JP
 

Pièces jointes

  • nomcol2.zip
    14.7 KB · Affichages: 65

titcoeur

XLDnaute Occasionnel
Re : nommer un champs via macro

Merci JP.

Je vais examiner tout ça.

Bête question : comment fais-tu pour que ta sheet se mette en mode "adressage relatif" ?

C'est à dire, les colonnes portent des numéros et plus des lettres, et le navigateur indique les adresses R1C2 et non plus "B1" ?
 

pierrejean

XLDnaute Barbatruc
Re : nommer un champs via macro

bonjour titcoeur
Salut jp14

je suis peut-etre a coté de la plaque !!

A tester:

Code:
Sub macro1()
ad = Selection.CurrentRegion.Address(ReferenceStyle:=xlR1C1)
ActiveWorkbook.Names.Add Name:="test", RefersToR1C1:="=Feuil1!" & ad
Range("test").Select
End Sub

a adapter eventuellement pour le nom de la feuille
 

jp14

XLDnaute Barbatruc
Re : nommer un champs via macro

Bonjour titcoeur, le forum
Salut Pierrejean

Merci JP.

Je vais examiner tout ça.

Bête question : comment fais-tu pour que ta sheet se mette en mode "adressage relatif" ?

C'est à dire, les colonnes portent des numéros et plus des lettres, et le navigateur indique les adresses R1C2 et non plus "B1" ?

Pour changer le nom des colonnes menu outils, options, général.
Dans la macro il faut garder la forme R1C1

JP
 

Lorenzomike

XLDnaute Nouveau
Re : nommer un champs via macro

Bonjour à tous,
J'ai aussi des difficultés avec une macro pour nommer des plages.
De mémoire, c'est pierrejean qui m'avait trouvé une macro efficace.
Le fichier ayant évolué fortement, la macro associé ne marche plus.
Je joins le fichier pour plus de compréhension. (trop je mets juste la feuille concernée)
En fait, je voudrais nommer les plages de la Feuil1 (colonne C à I), le nombre de lignes étant variable par le nom inscrit dans la colonne A de chaque plage.
en gros, dans le fichier joint, ça donnerait C2:I9 = ANANG221750

Quelqu'un peut-il m'aider?
Merci d'avance

Ci-dessous la macro :
Sub Nomme()
Feuilles_non_concernees = "FG,CUMUL DR,BRETAGNE VENDEE,VAL DE LOIRE,V.D.L - Tours,V.D.L - Orléans,BASSE NORMANDIE ANJOU,B.N.A - Angers,B.N.A - Caen,AQUITAINE,AQUIT. Bordeaux,AQUIT. Vallans,AQUIT. Castets,AGENCE RGT,DIVERS" '
For Each s In Sheets
If InStr(Feuilles_non_concernees, s.Name) = 0 Then
For n = 1 To s.Range("A65536").End(xlUp).Row
If s.Range("A" & n) <> "" Then
finl = s.Range("B" & n).End(xlDown).Row
finc = s.Range("IV1").End(xlToLeft).Column
nom = s.Range("A" & n)
ad = "=" & s.Name & "!" & s.Range(Cells(n, 3).Address & ":" & Cells(finl, finc).Address).Address(1, 1, xlR1C1)
ActiveWorkbook.Names.Add Name:=nom, RefersToR1C1:=ad
End If
Next n
End If
Next s
End Sub
 

Pièces jointes

  • TMR TEST 2011(1).xls
    35 KB · Affichages: 62

Lorenzomike

XLDnaute Nouveau
Re : nommer un champs via macro

Bonjour pierrejean,

Effectivement, ça fonctionne dans le fichier joint.
Le problème est que le fichier (le vrai) est trop gros pour être mis ici.
La macro s'arrête ici :
ActiveWorkbook.Names.Add Name:=nom, RefersToR1C1:=ad

De plus, ça ne fonctionne pas avec les plages d'une seule ligne.

Merci de tes réponses
 

pierrejean

XLDnaute Barbatruc
Re : nommer un champs via macro

Re

Voici la modif pour les champs d'une seule ligne

VB:
Sub Nomme()
Feuilles_non_concernees = "INDIVIS,BEAUCE SOLOGNE,FG,CUMUL DR,BRETAGNE VENDEE,VAL DE LOIRE,V.D.L - Tours,V.D.L - Orléans,BASSE NORMANDIE ANJOU,B.N.A - Angers,B.N.A - Caen,AQUITAINE,AQUIT. Bordeaux,AQUIT. Vallans,AQUIT. Castets,Agence RGT,DIVERS" '
For Each s In Sheets
If InStr(Feuilles_non_concernees, s.Name) = 0 Then
For n = 1 To s.Range("A65536").End(xlUp).Row
If s.Range("A" & n) <> "" Then
If s.Range("B" & n + 1) = "" Then
finl = n
Else
finl = s.Range("B" & n).End(xlDown).Row
End If
finc = s.Range("IV1").End(xlToLeft).Column
nom = s.Range("A" & n)
ad = "=" & s.Name & "!" & s.Range(Cells(n, 3).Address & ":" & Cells(finl, finc).Address).Address(1, 1, xlR1C1)
ActiveWorkbook.Names.Add Name:=nom, RefersToR1C1:=ad
End If
Next n
End If
Next s
End Sub
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
303

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 520
dernier inscrit
Azise