[XL 2010] Listes déroulantes liées par macro

Bonjour à tous,

Je cherche à créer à travers une macro des listes du style validation de données dont l'une dépend du résultat d'une autre.

J'ai placé mon fichier en pièce jointe pour plus de clarté.

Dans ce fichier, je fusionne à plusieurs reprises des cellules (en colonne G, S et T) par l'intermédiaire d'une première liste (cellule O21), puis je crée une première série de listes dans les cellules fusionnées de la colonne S.

Jusque là, ça fonctionne.

Ce qui coince, c'est que je souhaite créer des listes dans les cellules fusionnées de la colonne T en fonction des choix des listes de la colonne S. Et là, je bloque.

Voici un extrait du code simplifié :

Private Sub Worksheet_Change(ByVal Target As Range)
    Colonne_FinitionVentail = "S"
    Set Tableau_FinitionVentail = Columns(Colonne_FinitionVentail).Rows(Ligne_Depart(0) & ":" & Ligne_Fin(0))

    If Target.Address = Range("$O21").Address Then
        Tableau_FinitionVentail.MergeCells = False
        Tableau_FinitionVentail.ClearContents
        Tableau_FinitionVentail.Validation.Delete
        Select Case Target
         Case "Moitié/Moitié"
            n_parties = 2
            taille_partie(1) = 12 / n_parties
            taille_partie(2) = taille_partie(1)
        Case "Bandeau"
            n_parties = 3
            taille_partie(1) = 7
            taille_partie(2) = 1
            taille_partie(3) = 4
        End Select

        For i = 1 To n_parties
            Ligne_Depart(i) = Ligne_Depart(i - 1) + taille_partie(i - 1)
            Ligne_Fin(i) = Ligne_Depart(i) + taille_partie(i) - 1
            Set Tableau_FinitionVentail = Columns(Colonne_FinitionVentail).Rows(Ligne_Depart(i) & ":" & Ligne_Fin(i))
            Tableau_FinitionVentail.MergeCells = True
            Select Case modèle
            Case "Confort", "Classic", "Elegance"
                    Tableau_FinitionVentail.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Fin1,Fin2,Fin3,Fin4"
            Case "Pliante"
                    Tableau_FinitionVentail.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Fin1"
        Next
    End If

    For i = 1 To n_parties
        Set Tableau_FinitionVentail = Columns(Colonne_FinitionVentail).Rows(Ligne_Depart(i))
         If Target.Address = Tableau_FinitionVentail.Address Then
            Select Case Target.Value
            Case "Bandeau"
                Tableau_ColorisVentail.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Effet_cuir"
            Case Else
                    Tableau_ColorisVentail.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="Finition_Ventail"
            End Select
        End If
    Next

End Sub

Je vous remercie par avance pour votre aide

29test-excel.xlsm (31.63 Ko)

Je n'ai pas regarde ton code mais n'est il pas possible de detecter un changement de valeur dans la colonne S pour creer une liste a la meme ligne dans la colonne T?

Bonjour poulu,

C'est justement ce que j'essaie de faire via :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Tableau_FinitionVentail.Address Then (...)

Tableau_FinitionVentail correspond aux cellules de la colonne S qui ont été.

Je vais ajouté 2 lignes au début du code pour plus de clarté, à savoir :

Colonne_FinitionVentail = "S"
Set Tableau_FinitionVentail = Columns(Colonne_FinitionVentail).Rows(Ligne_Depart(0) & ":" & Ligne_Fin(0))

Personne n'a d'idée pour m'aider à résoudre ce problème ?

Rechercher des sujets similaires à "2010 listes deroulantes liees macro"