Création nom de plage libellé colonne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

aubelix

XLDnaute Impliqué
Bonjour à tous les amis du Forum 🙂

Je sollicte votre aide pour la création d'un nom de plage de données
qui peut varier d'un classeur à un autre. Plus de 1000 lignes...
Comment via VBA créer les noms des colonnes en vert.
Je sais les créer sous excel : selectionner les colonnes :
Insertion - Nom - Créer : Lignes du haut.
Je voudrai automatiser cette action car j'ai une macro qui traite le fichier.
Et actuellement, je réalise cette action "Manuellement" 😡

Par avance, merci pour votre aide.
Cordialement.
 

Pièces jointes

Re : Création nom de plage libellé colonne

Bonjour Aubelix,

Je pourrais te donner la réponse brute, mais je préfère te donner quelques astuces pour que peu à peu tu y parvienne seul 😉

Etape 1 : Utilisation de l'enregistreur de macro
-> lancer l'enregistreur de macro
-> faire les étapes que tu fais à habituellement à la main
-> arrêter l'enregistreur de macro

Pour éviter un post pas clair et trop long, j'ai fais la manipulation que sur la colonne E : QTE

Etape 2 : Regarder le code ainsi obtenu
Code:
Sub Test()
' Macro enregistré par Excel-lent

    Range("E1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:= _
        False
End Sub

Etape 3 : un petit nettoyage de printemps
Code:
Sub Test()
' Macro enregistré par Excel-lent

    Range("E1", [E1].End(xlDown)).CreateNames Top:=True
    Range("O1", [O1].End(xlDown)).CreateNames Top:=True
    Range("R1", [R1].End(xlDown)).CreateNames Top:=True
End Sub

Etape 4 : simplification
Voir si par l'utilisation d'une boucle quelconque on peut raccourcir le code en supprimant les répétions.

Dans ton cas, il y a bien une répétition : .End(xlDown)).CreateNames Top:=True

Mais là, comme ca, je ne vois pas comment l'éviter étant donné que les colonnes que tu veux nommer semble fait de façon aléatoire (ne correspond pas à une formule mathématique - exemple : toutes les colonnes impaires, ...)

La réponse finale (brute de décoffrage) est donc :
Code:
Range("E1", [E1].End(xlDown)).CreateNames Top:=True
Range("O1", [O1].End(xlDown)).CreateNames Top:=True
Range("R1", [R1].End(xlDown)).CreateNames Top:=True

Etape 5 : test
Sans oublier de tester le code ainsi obtenu, au cas où dans notre volonté de trop simplifier, la macro ne fonctionne plus!

Bon dimanche
 
Dernière édition:
Re : Création nom de plage libellé colonne

Bonjour Aubélix, Excel-lent, bonjour le forum,

Je te propose la macro suivante :

Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel
 
For Each cel In Range(Cells(1, 1), Cells(1, 256).End(xlToLeft)) 'boucle sur toutes les cellules éditées de la ligne 1
    If cel.Interior.ColorIndex = 4 Then 'condition si la couleur de la cellule est le "vert brillant"
        Range(Cells(1, cel.Column), Cells(65536, cel.Column).End(xlUp)).Name = cel.Value 'nomme la colonne avec le nom de la cellule
    End If 'fin de la condition
Next cel 'prochaine cellule de la ligne 1
End Sub
 
Re : Création nom de plage libellé colonne

Bonjour à tous,
Autre proposition :
Code:
Sub Créer_NOM()
Dim zn(), i As Long
    zn = Array("BASSE DONNEES", 5, 15, 18) '(nom_de_la_feuille, colonne_1, colonne_2, ...)
    With Worksheets(zn(0))
        For i = 1 To UBound(zn)
            ActiveWorkbook.Names.Add Name:=.Cells(1, zn(i)).Value, RefersToR1C1:= _
                "='" & zn(0) & "'!R2C" & zn(i) & ":R" & .Cells(1, zn(i)).CurrentRegion.Rows.Count & "C" & zn(i)
        Next i
    End With
End Sub
Bonne journée !
ROGER2327
 
Re : Création nom de plage libellé colonne

bonjour le fil,

encore une autre:

Code:
Sub Creation_Noms()
    Dim plg As Range
    Dim c As Range
    Set plg = Range("A1").CurrentRegion
    For Each c In plg.Rows(1).Cells
        If c.Interior.ColorIndex = 4 Then
            Intersect(c.EntireColumn, plg).Name = c.Text
        End If
    Next c
End Sub

A+
 
Re : Création nom de plage libellé colonne

Bon jour à tous.
Il est à noter que les formules de Hasco (ou la mienne) et de Robert ne font pas exactement la même chose. Les premières créent des plages ayant le même nombre de lignes que le tableau auquel elles appartiennent, tandis que la deuxième limite le nombre de lignes des plages au nombre de lignes utilisées dans leur colonne respective. Une solution n'est pas meilleure que l'autre : tout dépend de ce qu'on entend faire des plages nommées.​
Bonne soirée.
ROGER2327
 
Re : Création nom de plage libellé colonne

Bonsoir Excel-lent, Robert, Roger2327, Hasco. 🙂

Merci pour vos réponses.
1) Je me suis mal exprimé, je n'ai pas été très clair :
- le fond vert des en-têtes de colonnes servaient uniquement à repérer les colonnes à nommer.

2) Les macros d' Excel-lent, Roger2327 fonctionnent et répondent à mes besoins à savoir
de ne pas prendre en compte le libellé des colonnes dans les noms, uniquement les valeurs.

Celles de Robert et Hasco fonctionnent, mais inclus l'en-têtes des colonnes. je ne voulais que les valeurs.

Merci à tous de vous-être penchés sur mon problème et de m'avoiir consacré de votre temps.

Encore une fois merci.
Cordialement
 
Re : Création nom de plage libellé colonne

😛 Bonsoir Roger2327.

Je répondais, mais tu as lu dans mes pensées
Tu as tout à fait raison.
Il n'empêche, que je n'ai pas été très clair dans ma requête

Merci pour votre aide
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
953
Retour