Private test As Boolean 'déclare la variable test
Private Sub Worksheet_Change(ByVal Target As Range) 'à l'édition d'une cellule dans l'onglet
Dim li As Integer 'déclare la variable li (LIgne)
'si l'édition à lieu ailleurs que dans la colonne K, sort de la procédure
If Target.Column <> 11 Then Exit Sub
'si l'édition à lieu ailleurs que dans la première cellule vide de la colonne K, sort de la procédure
If Target.Row <> Cells(Application.Rows.Count, 11).End(xlUp).Row Then Exit Sub
If test = True Then Exit Sub 'si la variable test est vraie, sort de la procédure (évite de boucler sur la procédure Change)
test = True 'définit la variable test
li = Target.Row 'définit la ligne li
Rows(li).Copy Rows(li + 1) 'copie la ligne édité une ligne en dessous
Range(Cells(li + 1, 11), Cells(li + 1, 18)).ClearContents 'efface la plage K:R
If Target.Value = "Non" Then 'condition : si la cellule éditée contient "Non"
Range(Cells(li + 1, 2), Cells(li + 1, 4)).ClearContents 'efface la plage B:D
Range(Cells(li + 1, 6), Cells(li + 1, 10)).ClearContents 'efface la plage F:J
Cells(li + 1, 2).Select 'place le curseur dans la colonne B (à supprimer peut-être...)
End If 'fin de la condition
test = False 'réinitialise la variable test
End Sub