VBA nommer des listes automatiquement

Bonjour,

Ce message vient à la suite de mon précédent post (et de ma précédente question) ici :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=128290&p=787127#p787127

Et dans lequel je cherchais à faire des listes en cascades sur un grand nombre de donnée.

Il s'avère qu'une des étapes de la création de ces listes en cascade passe par la création de nom de plage, à la main.

Pour l'exemple il n'y en avait qu'une dizaine donc faisable, en revanche dans ma vraie base de donnée, j'ai 1800 colonnes contenant des données et devant être nommées, l'intitulé de la plage se trouvant dans la première ligne.

Du coup, je me demandais s'il était possible d'automatiser cela de façon simple avec une macro.

Je joins le fichier (test) afin que vous voyiez de quoi il retourne (il contient la première partie de ma question). les données sont dans l'onglet paramètre à partir de la colonne L jusqu'à BP. j'ai oublié de préciser que les listes pour chaque colonne avait une longueur variable de 1 à 284 lignes.

Merci d'avance pour votre aide.

10tableau-ppp-test.xlsx (234.38 Ko)

Re bonjour à tous,

Bon, j'ai trouvé un bout de code qui pourrait fonctionner. MAIS, il ne me choisi pas les en-têtes de colonne comme nom de plage

C'est là que j'ai besoin de votre aide...

Voilà le code trouvé :

Une première partie pour sélectionner ma plage et la seconde pour nommer... et c'est là qu'il doit me manquer quelquechose pour nommer en fonction des entêtes de colonnes.

Sub BoiteSelectionZone()
Dim Var As Range, i As Integer, NomZone As String
On Error Resume Next
Set Var = Application.InputBox("Sélectionner votre zone: (Ex. A1:B10) ", _
"Sélection de zone ", Default:="$A$1", Type:=8)
On Error GoTo 0
If Not Var Is Nothing Then
  MsgBox Var.Address
  Var.Select
Else
  Exit Sub
End If
NomZone = InputBox("Entrer le Nom de la plage", "Nommer la plage :")
If NomZone <> "" Then
    ActiveWorkbook.Names.Add Name:=NomZone, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Address
    If Var.Columns.Count = 1 Then Exit Sub
    For i = 1 To Var.Columns.Count
       ActiveWorkbook.Names.Add Name:=NomZone & "Col" & i, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Columns(i).Address
    Next
Else
    Exit Sub
End If
End Sub

Merci à tous pour votre aide.

J’espere Ne pas avoir collé les pros de ce forum !

Je fais un petit up, n’hesitez pas à le supprimer si vous le trouvez trop hâtif...

A+

Bonjour,

Si ta question se résume à l'automatisation du Nom de la plage ...

ci-dessous une ligne a besoin d'être modifiée ...

Sub BoiteSelectionZone()
Dim Var As Range, i As Integer, NomZone As String
On Error Resume Next
Set Var = Application.InputBox("Sélectionner votre zone: (Ex. A2:A10) ", _
"Sélection de zone ", Default:="$A$2", Type:=8)
On Error GoTo 0
If Not Var Is Nothing Then
  MsgBox Var.Address
  Var.Select
Else
  Exit Sub
End If
' Instruction pour choisir comme Nom le champ de la Ligne 1
' en fonction de la Colonne choisie plus haut ...
NomZone = Var.Resize(1, 1).Offset(-1, 0).Value
If NomZone <> "" Then
    ActiveWorkbook.Names.Add Name:=NomZone, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Address
    If Var.Columns.Count = 1 Then Exit Sub
    For i = 1 To Var.Columns.Count
       ActiveWorkbook.Names.Add Name:=NomZone & "Col" & i, RefersTo:="='" & ActiveSheet.Name & "'!" & Var.Columns(i).Address
    Next
Else
    Exit Sub
End If
End Sub

En espèrant que cela t'aide

Bonjour,

ce que j'avais créé il y a un moment.

Crée des noms dynamiques (restent valables si tu agrandis tes listes)

Modifie les noms interdits pour les rendre valides. Par exemple Fin1 est un nom interdit, remplacé par _Fin1. Idem pour les caractères interdits.

2019 08 09 00 09 58

eric

Bonjour Eric,

Félicitations

Très sympa et très très très complète ton application pour créer des plages nommées dynamiques ...

Bonjour,

Merci. J'ai d'autres idées pour la faire évoluer, mais ça sera pour plus tard quand j'aurai plus de temps

eric

Bonjour à tous,

Merci beaucoup pour les deux méthodes, que j'ai testé et approuvé.

Bien à vous.

Merci pour tes remerciements ...

et pour avoir passé le sujet en Résolu ...

Rechercher des sujets similaires à "vba nommer listes automatiquement"