[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 SubJe vous remercie par avance pour votre aide
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 ?