Public ValeurAE5    ' mémorise la valur de AE5 pour la restituer
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("Planning Treso").Unprotect ("SC6")
Application.ScreenUpdating = False
If Target.Address <> "$AE$5" Then Exit Sub
If Not Application.Intersect(Target, Range("AE5")) Is Nothing Then
    If Range("AE5") <> "9" Then
        Columns("AT").EntireColumn.Visible = False ' mon souhait pour la colonne AT, elle se cache si AE5 est<> de 9 ou s'affiche si AE5 = 9
        ActiveSheet.Shapes("OK").Visible = True
        ret = MsgBox("Si vous changez la durée d'utilisation, le montant de l'épargne écourté sera réinitialisé ! ", vbYesNo + vbQuestion, "Excel")
        If ret = vbYes Then
            Range("AS17").Value = 0
        Else
            Range("AE5").Value = ValeurAE5  ' comme la réponse est non, on restitue la valeur initiale
        End If
    Else    ' ici AE5=9
        Columns("AT").EntireColumn.Hidden = True
        ActiveSheet.Shapes("OK").Visible = False
    End If
End If
Worksheets("Planning Treso").Protect ("SC6")
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("AE5")) Is Nothing Then
        ValeurAE5 = [AE5]              ' sauvegarde AE5 pour la restituer plus tard si réponge msgbox est non.
        UserForm1.Show
    End If
    Worksheets("Planning Treso").Protect ("SC6")
End Sub