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é :
Je vous remercie par avance pour votre aide
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
Pièces jointes
Dernière édition: