Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

définir un nom sur plage de cellules en VBA

pmfontaine

XLDnaute Occasionnel
Bonjour,
J'ai beau chercher sur le NET et le Forum, je ne suis pas arrivé a trouvé la solution a mon problème.
Je viens donc solliciter votre aide.
EN vba, je souhaiterais donner les noms :
CATHEGORIE_A (nom qui se trouve en A1) à la plage de cellules A2 jusqu'a dernière cellule non vide de la colonne A.
Idem pour colonne B et C.
J’ai défini les noms de chaque zone, pour plus de compréhension, mon objectif étant de pouvoir mettre a jour chaque zone des sous_catégorie chaque fois que l’on rajoute des sous_catégorie.

J’espère mettre bien expliqué, voir fichier joint

J’utilise XL 2002, mais il se peux que ce programme soit utiliser sur XL 2013

Merci d’avance pour votre aide
Patrick
 

Pièces jointes

  • definir_nom_vba.xls
    26 KB · Affichages: 50

Staple1600

XLDnaute Barbatruc
Re : définir un nom sur plage de cellules en VBA

Bonjour à tous


Un exemple simple pour nommer simplement une plage de cellules
Code:
Sub DefinirNomenVBA()
Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp)).Name = "toto"
'lignes ci-dessous juste pour tests
MsgBox [toto].Address
MsgBox [toto].Name
MsgBox [toto].Name.Name
End Sub
 

john

XLDnaute Impliqué
Re : définir un nom sur plage de cellules en VBA

Bonjour,

Il y a de cette façon aussi un peu plus long, mais valable pour toutes les colonnes, même en cas d'ajout d'une ou plusieurs colonnes de références.

Bonne journée.

John
 

Pièces jointes

  • definir_nom_vba.xlsm
    20.5 KB · Affichages: 48

JCGL

XLDnaute Barbatruc
Re : définir un nom sur plage de cellules en VBA

Bonjour à tous,

Peux-tu essayer ceci dans un module standard :

Option Explicit

Sub Definir()
Dim Col&
For Col = 1 To 3
Range(Cells(2, Col), Cells(Rows.Count, Col).End(xlUp)).Name = Cells(1, Col)
Next Col
End Sub

Ici réglé pour trois colonnes.

A+ à tous
 

pmfontaine

XLDnaute Occasionnel
Re : définir un nom sur plage de cellules en VBA

Merci a tous votre votre aide,
Avec la première réponse de Staple1600 j'ai fais :

Je pensais compter le nombre de val dans la ligne 1 pour remplacer 3 par cette variable
Reste a savoir comment on compte le nombre de valeur dans une ligne en VBA.

Maintenat la proposition de Eric semble interessante :
Bonjour,
Tu peux définir les plages en dynamique (sur la feuille ou en vba si tu y tiens). Plus besoin de mise à jour ensuite.
eric
J'avoue que je n'y connais rien en plages Dynamique, est-ce que tu peux m'expliquer.
 

Staple1600

XLDnaute Barbatruc
Re : définir un nom sur plage de cellules en VBA

Re

pmfontaine
Tu as essayé le code VBA de JCGL ?
(message de 16h57)

Le mien n'était là qu'à titre illustratif et demandait des adaptations justement faites par JCGL

EDITION
: Houps pas rafraichi à temps.

JCGL: Cela m'arrive aussi d'être transparent dans les fils
C'est dans l'air du temps ...
 
Dernière édition:

pmfontaine

XLDnaute Occasionnel
Re : définir un nom sur plage de cellules en VBA

Bonjour à tous,

Merci de relire TOUS les messages et d'attribuer à César ce qui appartient à César.

A+ à tous

Désolé si je vous ai offensé, mais je ne vois pas ou j'ai écris une bêtise ?
Comme je l'ai écris, je suis bien partie de la première réponse de Staple pour créer mon scripte en mettant une variable a la place de "toto" et la boucle For Next.
C'est vrai que le résultat ressemble bien a la proposition de JCGL, mais ça me semble normal d'arriver a peu pré au même résultat.
 

JCGL

XLDnaute Barbatruc
Re : définir un nom sur plage de cellules en VBA

Bonjour à tous,

Si tu as trouvé une réponse à ton besoin : tant mieux.

Pour le fun : que signifie CATHEGORIE ?

A+ à tous

Edition : Pour ne pas se limiter à 3 colonnes (dynamisme complet tant en Lignes qu'en Colonnes)

Option Explicit

Sub Definir()
Dim Col&
For Col = 1 To Range("IV1").End(xlToLeft).Column
Range(Cells(2, Col), Cells(Rows.Count, Col).End(xlUp)).Name = Cells(1, Col)
Next Col
End Sub
 
Dernière édition:

pmfontaine

XLDnaute Occasionnel
Re : définir un nom sur plage de cellules en VBA

Merci JCGL pour ta proposition ne limitant pas les colonnes.
Je ne suis plus chez moi pour le moment, je testerais en début de semaine prochaine
Pour le fun : que signifie CATHEGORIE ?
Ben rien, le H n'a rien n'a faire ici, c'est moi qui suis très étourdit et nul en orthographe. en fait c'est simplement CATEGORIE que je voulais écrire.
 

eriiic

XLDnaute Barbatruc
Re : définir un nom sur plage de cellules en VBA

Tu fabriques ta référence de plage dans un nom avec decaler() et nbval(), ensuite elle s'étend automatiquement à l'ajout d'une ligne.
Après tu peux broder autour pour les cas particuliers.
Nommer une Plage Dynamique : Nommer une Plage Dynamique - Tutoriels & Astuces Excel > Fonctions & Formules - Tutoriels : myDearFriend! Excel Pages

Sur 2010, plus simplement, tu peux aussi transformer ta plage en tableau. Son nom (il faudra renommer) s'étendra automatiquement également.

Ensuite pour l'utiliser en vba : [le_nom]

eric
 
Dernière édition:

pmfontaine

XLDnaute Occasionnel
Re : définir un nom sur plage de cellules en VBA

Option Explicit

Sub Definir()
Dim Col&
For Col = 1 To Range("IV1").End(xlToLeft).Column
Range(Cells(2, Col), Cells(Rows.Count, Col).End(xlUp)).Name = Cells(1, Col)
Next Col
End Sub
Simple et efficase, ça marche trés bien. Merci JCGL
Merci eriiiic j'avais déjà regardé avec ce principe, sans parvenir a mes fins. mais je vais regardé de plus pré le tutoreils.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…