Action sous condition

Scoobidoo

XLDnaute Occasionnel
Bonjour à tous, le forum,

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.

Scoobidoo
 

Lone-wolf

XLDnaute Barbatruc
Bonsoir Scoobidoo

VB:
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
 
Dernière édition:

Scoobidoo

XLDnaute Occasionnel
Bonjour Lone Wolf, le Forum,

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.

Scoobidoo
 

Yurperqod

XLDnaute Occasionnel
Bonjour le forum

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
 

Si...

XLDnaute Barbatruc
salut

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)o_O
 

Discussions similaires

Statistiques des forums

Discussions
312 235
Messages
2 086 476
Membres
103 228
dernier inscrit
malik832