Bonjour Bertrand,
Un code que vous pourriez tester :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim animaux As Variant
Dim voitures As Variant
Dim dvList As String
Dim rangeB1 As Range
Set rangeB1 = Range("B1")
'Définissez vos listes ici
animaux = Array("lapin", "escargot", "chat")
voitures = Array("Renault", "Peugeot", "Kia", "Porsche")
'Vérifiez si la modification a été effectuée dans la cellule A1
If Not Intersect(Target, Range("A1")) Is Nothing Then
With rangeB1.Validation
.Delete 'supprime la validation précédente
'Crée la liste déroulante basée sur la valeur de A1
Select Case Range("A1").Value
Case "animaux"
dvList = Join(animaux, ",")
Case "voitures"
dvList = Join(voitures, ",")
Case Else
dvList = ""
End Select
'Ajoute la nouvelle validation
If dvList <> "" Then
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=dvList
End If
End With
End If
End Sub
Le code crée des listes déroulantes basées sur la valeur de la cellule A1. Dans cet exemple, j'ai utilisé un tableau pour définir les options de la liste déroulante, mais vous pouvez également lire ces options à partir d'une plage de cellules si vous préférez.