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

SkyCorp

XLDnaute Junior
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é :
Code:
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
 

Fichiers joints

Dernière édition:

bbb38

XLDnaute Accro
Re : [XL 2010] Listes déroulantes liées par macro

Bonjour SkyCorp, le forum,
Personne n'a d'idée pour m'aider à résoudre ce problème ?
Personnellement, je ne peux pas t’aider, car je n’aime pas gérer des cellules fusionnées en vba. Je préfère agrandir les cellules avec un renvoi à la ligne automatique. Exemple avec le fichier ci-joint.
Cordialement,
Bernard
 

Fichiers joints

SkyCorp

XLDnaute Junior
Re : [XL 2010] Listes déroulantes liées par macro

Merci bbb38 pour ton retour.

Je ne crois pas cependant que ta solution soit adaptée à mon cas : sur une même série de lignes, je fusionne un nombre de cellules différent.

Par exemple, je fusionne les cellules G21:G23, G24:G29 et G30:G32 (3 groupes de cellules) en fonction des conditions de ma première liste déroulante en O21.
Idem pour les colonnes S et T, ces 2 colonnes comportant autant de listes déroulantes que de groupes de cellules fusionnées (une liste en S21, une en S24 et une en S30).
Avec une autre condition de ma liste, je peux avoir 4 groupes de cellules fusionnées, ou encore 1 seul groupe (G21:G32).
En revanche, la colonne D comportera toujours le même nombre de cellules fusionnées : D21:D25, D26:D28 et D29:D32.

Je précise que tout se passe entre les lignes 21 et 32 et que toutes les lignes ont la même largeur.
L'aspect graphique est primordial ici. Je ne tiens pas forcément à fusionner, mais je n'ai pas trouvé d'autre solution.
Peut-être avec des zones de texte dont la positionnement et les dimensions sont gérées par VBA, mais je ne sais pas s'il est possible d'y placer des listes déroulantes.
 

Discussions similaires


Haut Bas