neozenfragance | Voilà le code pour le cas que je t'ai décrit :
Code :
- Private Sub Worksheet_Change(ByVal Target As Range)
- Dim Cellule As Range, ListeValidation As String
- Set Cellule = Target.Cells(1, 1)
-
- If Cellule.Column = 1 Then ' On vérifie que la cellule appartient à la colonne A
-
- Cellule.Offset(0, 1).Validation.Delete ' On supprime l'ancienne validation de la cellule de la colonne B correspondant au Target
-
- If Cellule <> "" Then
-
- Select Case Cellule ' On définit la nouvelle liste de validation
- Case "Amérique": Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Argentine,Brésil,Etats-Unis"
- Case "Asie": Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Chine,Inde"
- Case "Europe": Cellule.Offset(0, 1).Validation.Add Type:=xlValidateList, Operator:=xlBetween, Formula1:="Angleterre,Belgique,France"
- End Select
-
- End If
-
- End If
-
-
- End Sub
|
J'ai utilisé une liste de validation qui est beaucoup plus simple à gérer qu'un ComboBox. A chaque fois qu'une cellule de la colonne A est modifiée (on utilise l'évènement worksheet_change de la feuille de saisie), si la valeur entrée est un continent, ici Amérique, Asie ou Europe, la liste des pays correspondant est affichée dans la cellule correspondante de la colonne B. Les listes de validation peuvent ensuite être paramétrées.
Le code est à placer dans le module de code de la feuille de saisie. |