Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Target.Column <> 5 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne E, sort de la procédure
If Target.Row < 2 Then Exit Sub 'si le changement à lieu dans la ligne 1, sort de la procédure
Select Case Target.Value 'agit en fonction de la valeur de la cellule éditée
Case "Pour Info" 'cas "Pour info"
Target.Offset(0, 1).Value = "!" 'la cellule à droite prend la valeur : "!"
Case "Oui" 'cas "Oui"
Target.Offset(0, 1).Value = "V" 'la cellule à droite prend la valeur : "V"
Case "Non" 'cas "Non"
Target.Offset(0, 1).Value = "X" 'la cellule à droite prend la valeur : "X"
Case "", "Sans Objet" 'cas "Sans Objet" ou cellule effacée
Target.Offset(0, 1).Value = "" 'la cellule à droite est effacée aussi
End Select
If Target.Offset(0, -2) <> "" Then 'condition 1 : si le changement a lieu dans une cellule où le "contenu" n'est pas vide
If Target.Value = "Non" Or Target.Value = "Sans Objet" Then 'condition 2 : si la valeur de la cellule est "Non" ou "Sans Objet"
'masque les ligne en dessous jusqu'à la prochaine rubrique
Rows(Target.Row + 1 & ":" & Target.Offset(0, -2).End(xlDown).Row - 1).Hidden = True
Else 'sinon
'affiche les ligne en dessous jusqu'à la prochaine rubrique
Rows(Target.Row + 1 & ":" & Target.Offset(0, -2).End(xlDown).Row - 1).Hidden = False
End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub