Création d'une liste déroulante dans une cellule,référence variable

Bonjour à tous

J'ai une petit soucis, je souhaiterais réaliser une liste déroulante dans plusieurs cellules d'une page X. Cette liste déroulante fait référence à une liste variable dans une page 4. La liste est fonction du nombre d'élément que l'utilisateur à réalisé.

Private Sub Worksheet_Activate() ' lors de l'ouverture de la page X la liste se créée
Dim listparoi As String
Dim userRange As String
Dim indiceparoi As Integer
Dim indligne As Integer

nbparoislist = 3 ' renvoie le nombre d'éléments dans la liste parois de la page 4

    While Feuil4.Cells(nbparoislist, 1) <> ""
        nbparoislist = nbparoislist + 1
    Wend
'
''Set userRange = Worksheets("Parois").Range(Range("A4"), Range("A1000").End(xlUp))

For indligne = 2 To 28 ' je souhaite que cette liste se retrouve dans les cellules " C2 à C28"

           indiceparoi = 3
            For indiceparoi = 3 To nbparoislist ' Affiche la liste des locaux
                userRange = Feuil4(indiceparoi, 1)
                Cells(indligne, 3).AddItem userRange '
            Next indiceparoi

            With Cells(indligne, 3).Validation
                     .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                    xlBetween, Formula1:="=" & userRange.Address
                .IgnoreBlank = True
                 .InCellDropdown = True
                   .InputTitle = ""
                   .ErrorTitle = ""
                   .InputMessage = ""
                  .ErrorMessage = ""
                   .ShowInput = True
                   .ShowError = True
            End With

Next indligne

End Sub

J'espère que je ne suis pas trop diffus ^^

Merci d'avance

Bonne journée

Bonjour,

Voici un code à tester, voir les commentaires pour les explications :

Private Sub Worksheet_Activate() ' lors de l'ouverture de la page X la liste se créée

    Dim Plage As Range

    'défini la plage sur la feuille "Feuil4" en colonne A à partir de A3, à adapter...
    With Worksheets("Feuil4"): Set Plage = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    'supprime le nom
    On Error Resume Next
    ThisWorkbook.Names("Parois").Delete
    On Error GoTo 0

    'puis le défini à la nouvelle plage
    Plage.Name = "Parois"

    'insère les listes de validation en une suele fois dans
    'le Range voulu (ici, C2 à C28 sur la feuille active)
    With ActiveSheet

        With .Range("C2:C28").Validation

            .Delete
            .Add 3, 1, 1, Plage.Name

        End With

    End With

End Sub

Bonjour Theze ,

Le code fonctionne à merveille! . Il faut juste changer "Feuil4" par le nom donné à la feuille.

Merci

Rechercher des sujets similaires à "creation liste deroulante reference variable"