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 With

Pourquoi?

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 With

J'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:= _
        Adresse2

Partie 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 With

Merci de m'avoir aider.

Agrimaman

Rechercher des sujets similaires à "vba gestionnaire noms"