Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Or Target.Row < 4 Then Exit Sub 'si plusieurs cellules sélectionné ou si le changement à lieu dans une ligne inférieure à 4, sort e la procédure
Select Case Target.Column 'agit en fonction de la colonne de la cellule éditée
Case 17 'cas 17 (colonne Q)
Target.Offset(0, 1).Validation.Delete 'supprime la liste de validation de données en colonne R
Target.Offset(0, 2).Validation.Delete 'supprime la liste de validation de données en colonne S
Target.Offset(0, 3).Validation.Delete 'supprime la liste de validation de données en colonne T
Target.Offset(0, 1).Resize(, 3).ClearContents 'efface le contenu des cellules des colonnes R à T
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
Case "Oui" 'cas "Oui"
With Target.Offset(0, 1).Validation 'prend en compte la validation de donnée de la cellule en colonne R
.Delete 'supprime une éventuelle validation existante
'ajoute les valeurs de la plage X1:X2 comme liste de validation de données
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$X$1:$X$2"
End With 'fin de la prise en compte de la validation de donnée de la cellule en colonne R
Case "Non" 'cas "Non"
Target.Offset(0, 1).Resize(, 3).Value = "X" 'place "X" dans les cellules des colonnes R à T
End Select 'fin de l'action en fonction de la valeur de la cellule modifiée
Case 18 'cas 18 (colonne R)
Target.Offset(0, 1).Validation.Delete 'supprime la liste de validation de données en colonne S
Target.Offset(0, 2).Validation.Delete 'supprime la liste de validation de données en colonne T
Target.Offset(0, 1).Resize(, 2).ClearContents 'efface le contenu des cellules des colonnes S à T
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
Case "Oui" 'cas "Oui"
With Target.Offset(0, 1).Validation 'prend en compte la validation de donnée de la cellule en colonne S
.Delete 'supprime une éventuelle validation existante
'ajoute les valeurs de la plage X1:X2 comme liste de validation de données
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$X$1:$X$2"
End With 'fin de la prise en compte de la validation de donnée de la cellule en colonne S
Case "Non" 'cas "Non"
Target.Offset(0, 1).Resize(, 2).Value = "X" 'place "X" dans les cellules des colonnes S à T
End Select 'fin de l'action en fonction de la valeur de la cellule modifiée
Case 19 'cas 19 (colonne S)
Target.Offset(0, 1).Validation.Delete 'supprime la liste de validation de données en colonne T
Target.Offset(0, 1).ClearContents 'efface le contenu des cellules de la colonne T
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
Case "Oui" 'cas "Oui"
With Target.Offset(0, 1).Validation 'prend en compte la validation de donnée de la cellule en colonne T
.Delete 'supprime une éventuelle validation existante
'ajoute les valeurs de la plage X1:X2 comme liste de validation de données
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=$X$1:$X$2"
End With 'fin de la prise en compte de la validation de donnée de la cellule en colonne T
Case "Non" 'cas "Non"
Target.Offset(0, 1).Value = "X" 'place "X" dans la cellule en colonne T
End Select 'fin de l'action en fonction de la valeur de la cellule modifiée
End Select 'fin de l'action en fonction de la colonne de la cellule modifiée
End Sub