VBA et Gestionnaire de noms
Bonjour,
Quel est le script dans VBA pour créer une liste dans gestionnaire des noms en intégrant le nom de la feuille?
Dans mon exemple ci dessous PAL correspond à la plage à rajouter dans gestion des noms
Set PAL = Spv.Range(Cells(2, CFSpv + 1), Cells(LFSpv, CFSpv + 1))
Nom_Dim_LD="BT"
ActiveWorkbook.Names.Add Name:=Nom_Dim_LD & "_LVar", RefersToR1C1:= _
"ProduitsVar!" & PAL.Address
ActiveWorkbook.Names(Nom_Dim_LD & "_LVar").Comment = ""Sauf que quand je regarde le résultat j'ai ="ProduitsVar!A1:A2" - Les guillemets sont de trop
De plus quand je veux affecter la liste à une cellule, au final c'est seulement le nom de la liste qui apparait et nom pas la liste
Sa.Activate
Cells(x, CV).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Nom_Culture_Dim & "_LVar"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End WithPourquoi?
Je ne peux pas mettre de fichier car trop de données dedans confidentielles et trop long à tout changer.
Merci de votre retour
Agrimaman
Bonjour,
essaie ainsi :
Set pal = spv.Range(spv.Cells(2, cfspv + 1), spv.Cells(lfspv, cfspv + 1))
Nom_Dim_LD = "BT"
ActiveWorkbook.Names.Add Name:=Nom_Dim_LD & "_LVar", RefersTo:=pal
ActiveWorkbook.Names(Nom_Dim_LD & "_LVar").Comment = ""
sa.Activate
With sa.Cells(x, cv).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Nom_Dim_LD & "_LVar"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End WithJ'ai essayé et affecter à la cellule la liste BT_LVar
Il me met un message d'erreur soit disant que "la source est reconnu comme erroné".
Quand je regarde dans le Gestionnaire des noms, dernière BT_LVar j'ai =ProduitsVar!'L2C1':'L27C1'
Agrimaman
J'ai trouvé la solution à mon soucis mais un peu au hasard mais grâce aussi ce que tu m'as indiqué.
C'est la ligne ActiveWorkbook.Names(Nom_Dim_LD & "_LVar").Comment = "" qui entrainait un problème
Avant de la désactiver, le nom apparaissait ainsi ="ProduitsVar!$A$1:$A$1"
En la supprimant, le nom apparait bien sous =ProduitsVar!$A$1:$A$1
et je ne suis plus bloquée pour insérer cette référence dans une cellule.
Au final le code ressemble à celui ci
Partie pour créer le nom dans gestionnaire des noms
Dim Nom_Onglet As String
Dim PAL as range
Dim LFSpv, CFSpv as long
Dim Nom_Dim_LD as string
Dim Adresse, Adresse 2 as string
Nom_Onglet = ActiveSheet.Name
Nom_Dim_LD="BT"
CFSpv = Spv.Cells(1, Columns.Count).End(xlToLeft).Column
LFSpv = Spv.Cells(Rows.Count, CFSpv + 1).End(xlUp).Row
Set PAL = Spv.Range(Cells(2, CFSpv + 1), Cells(LFSpv, CFSpv + 1))
Adresse = PAL.Address
Adresse2 = "=" & Nom_Onglet & "!" & Adresse
ActiveWorkbook.Names.Add Name:=Nom_Dim_LD & "_LVar", RefersTo:= _
Adresse2Partie pour l'insérer dans une cellule
Cells(x, CV).Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=" & Nom_Dim_LD & "_LVar"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End WithMerci de m'avoir aider.
Agrimaman