J'ai un code d'enregistrement automatique de mon fichier dans l'évènement Workbook Before Close qui marche bien.
Je voudrais l'améliorer en y ajoutant la condition suivante: Si le fichier est ouvert en lecture seule alors on ferme sans enregistrement.
Simple pour moi d'écrire en français mais j'ai besoin de vous car je cale pour l'écrire en Vba.
Je vous remercie d'avance pour votre éclairage.
Au plaisir de vous lire.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveWorkbook.ReadOnly Then
Application.DisplayAlerts = False
Application.Quit
Else
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.Quit
End If
End Sub
C'est super et tellement simple que j'ai une fois de plus un peu honte. Mais je progresse lentement et régulièrement en lisant bon nombre de message sur ce forum.
Merci à toi pour ton aide et bonne journée à tous.
Au cas d'autres classeurs sont ouverts, mieux vaut ne pas fermer Excel mais le classeur qui contient la macro.
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ActiveWorkbook.ReadOnly Then
Application.DisplayAlerts = False
ActiveWorkBook.Close False
Else
Application.DisplayAlerts = False
ActiveWorkbook.Close True
End If
End Sub
En raccourci avec les variables booléennes (à True ou False)
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayAlerts = Not ActiveWorkbook.ReadOnly
ActiveWorkbook.Close = Not ActiveWorkbook.ReadOnly
End Sub
Intéressant à connaître :
Avec A=B=C, A est vrai si B=C sinon A est Faux
Avec A=B=not C, A est vrai si B<>C sinon A est Faux (équivalent à : A est faux si B=C sinon A est vrai)