Private Sub Workbook_BeforeClose(Cancel As Boolean)
'--- Comme vous avez dû le remarquer, j'ai déplacé les
'--- instructions de conditions d'annulation en tête de
'--- la procédure puisqu'elles régissent la suite ou la
'--- non suite du programme
If Sheets("Formulaire").Range("B33").Value > Now() + 366 Then
MsgBox "Impossible ! Maximum d'un an dépassée."
Cancel = True
End If
If Sheets("Formulaire").Range("B33").Value = "" Then
MsgBox "Saisie incomplète !"
Cancel = True
End If
'--- Si Cancel = True (annulation de la procédure)
If Cancel Then
'---quant à faire, autant sélectionner la cellule B33 pour une meilleure signalisation à l'utilisateur
[b33].Select
'--- puis on annule la suite de la procédure en provoquant une sortie immédiate par l'instruction Exit Sub qui suit
Exit Sub
End If
'--- Les instructions suivantes ne seront pas réalisées si Cancel = True et que le programme passe par Exit Sub
Application.ScreenUpdating = False
Sheets("Info").Visible = True
Sheets("Formulaire").Select
ActiveWindow.SelectedSheets.Visible = False
ActiveWorkbook.Save
End Sub