Private test As Boolean 'déclare la variable test au nveau du composant Sheet
Private Sub Worksheet_Change(ByVal Target As Range)
'ce test evite la boucle du Change puisque des cellules sont effaçées
If test = True Then 'condition : si test est vrai
test = False 'test devient faux
Exit Sub 'sort de la procédure
End If 'fin de la contition
'Condition : si l'édition se fait ailleurs qu'en A3, sort de la procédure
If Target.Address <> "$A$31" Then Exit Sub
If Range("A27") = "" And Range("A28") = "" Then 'condition 1 : sil A27 et A28 sont vides
If Sheets("Accueil").Range("U30").Value = "TEST" Then 'condition 2 : si U30="TEST"
UserForm3.Show 'affiche l'UserForm3
Range("A31:C31").ClearContents 'efface le contenu de A31:C31 (la le code repart au début...)
End If 'fin de la condition 2
End If 'fin de la condition 2
test = True 'définit la variable test
Target.ClearContents 'supprime l'édition faite en A31 (la le code repart au début aussi...)
End Sub