Private test As Boolean 'déclare la variable test
Sub Worksheet_Change(ByVal Target As Range)
Dim Z As String 'déclare la variable Z
If test = True Then test = False: Exit Sub 'si test =true, test=false, sort de la procédure (évite la boucle sur l'événement change)
If Target.Address = "$B$9" Then 'condition : si le changement a lieu dans B9
test = True 'définit la variable test
Else 'sinon
Exit Sub 'sort de la procédure
End If 'fin de la condition
Range("B12") = "" 'vide B12
Select Case Range("B9").Value 'définit la variable Z en fonction de la valeur de B9
Case "E150a"
Z = "=$A$29:$A$31"
Case "E150b"
Z = "Unknown"
Case Is = "E150c"
Z = "=$C$29:$C$37"
Case "E150d"
Z = "=$D$29:$D$36"
Case "Unknown"
Z = "Unknown"
Case Else 'tous les autres cas
Exit Sub 'sort de la procédure
End Select 'fin de l'action eb fonction de...
'définit la validation de données
With Range("B12").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=Z
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub