Bonjour,
Dans ce cas il faudrait comparer dès le début de la boucle les dates :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Worksheets("PARAM")
If .[B1] = .[B2] Then
MsgBox "Attention dernière fermeture possible du fichier", vbCritical
.[B1] = 3
ThisWorkbook.Save
End If
End With
End Sub
Private Sub Workbook_Open()
With Worksheets("PARAM")
If Date > .[B4] Or Date < .[B3] Then MsgBox "Vous ne pouvez plus accéder à ce fichier, la période ne couvre pas aujourd'hui", vbCritical: ThisWorkbook.Close True
Select Case .[B1]
Case Is > .[B2]
MsgBox "Vous ne pouvez plus accéder à ce fichier", vbCritical
ThisWorkbook.Close True
Case Is = .[B2] - 1
MsgBox "Attention dernière ouverture possible du fichier", vbCritical
.[B1] = .[B1] + 1
ThisWorkbook.Save
Case Else
.[B1] = .[B1] + 1
ThisWorkbook.Save
End Select
End With
End Sub
Il faudra penser à protéger le code VBA. Mais des petits malins trouveront toujours de quoi contourner les sécurités ... Dans ce cas il faudrait mieux avoir une feuille vierge en xlvisible , et afficher les autres feuilles en xlvisible que si les conditions sont respectées, sinon les laisser en xlverryhidden.
Cdlt,