XL 2019 Sub BeforeClose(Cancel As Boolean)

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonjour le forum, je souhaiterai qu'avant de fermer sans modification, cette macro s’exécute quand même
" Application.CommandBars("Ply").Enabled = True "

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True 'thisWorkbook.Close Savechanges:=False
End Sub

Est ce possible ? merci pour votre aide

Pat66
 
Solution
Bonsoir, voici la solution à mon problème grâce à votre aide


VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ret As Integer
ret = MsgBox("Souhaitez vous fermer ce classeur ?", vbYesNo + vbInformation)
If ret = vbNo Then
Cancel = True
Else
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.CommandBars("Ply").Enabled = -True
Application.CommandBars("Cell").Enabled = True
Application.CellDragAndDrop = True
Application.DisplayFullScreen = False
Application.ScreenUpdating = False
Application.EnableEvents = True
Application.DisplayAlerts = True
ThisWorkbook.Saved = True
End If
End Sub

Merci pour votre aide
re

je crois que c'est pas aussi simple car lorsque j'ouvre un autre classeur après avoir fermé le classeur avec cette macro, il ne tient pas compte de ces 2 instructions :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayFullScreen = false
Application.CommandBars("Ply").Enabled = True
ThisWorkbook.Saved = True
End Sub



merci
 
Bonjour pat66, juvaxe,

essaye :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With ThisWorkbook
    .DisplayFullScreen = 0: .CommandBars("Ply").Enabled = -1: .Saved = -1
  End With
End Sub



edit : désolé, ce code VBA est erroné ; voir mon post #9.

soan
 
Dernière édition:
Bonsoir Soan

J'ai copié ta macro et j'ai fais une capture d'écran du bug lorsque je clique sur la croix rouge du classeur pour fermer sans enregistrer et en plus juste après il me demande si je veux enregistrer les modifs, bizarre non ?
et tout çà parce que je souhaite qu'à l'ouverture le classeur se mette en plein écran et qu'il annule le clic droit sur les onglets et que l'on puisse fermer le classeur sans enregistrer les modifications
 

Pièces jointes

  • capture1.jpg
    capture1.jpg
    33.3 KB · Affichages: 33
Bonjour pat66,

j'en suis pas sûr, mais comme ton message d'erreur parle de « plateforme » et « architecture », c'est p't'être un bug qui survient au cas où tu utilises une version d'Office 64 bits ? si c'est ça, je n'peux pas t'aider, et j'ai rien d'autre à proposer ; mais un autre intervenant pourra peut-être te trouver une solution ? alors continue de surveiller les futures réponses... bonne chance ! 🍀​

soan
 
Bonjour pat66, soan, juvaxe, 🙂

@pat66 : ce message survient à ma connaissance lorsque le projet est protégé par mot de passe. Il faudrait le déprotéger pour connaitre sur quelque ligne ton code plante. Normal que soan ne puisse plus t'aider avec peu d'information.

Bonne journée.
 
Bonjour soan, juvaxe, cp4

je précise que ma version d'office est en 32 bits et voila le message que j'ai avec ces instructions, et ensuite il me demande si je veux enregistrer le classeur, en tout cas merci de m'aider

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With ThisWorkbook
.Unprotect ("aze"): .DisplayFullScreen = 0: .CommandBars("Ply").Enabled = -1: .Saved = -1
End With
End Sub
 

Pièces jointes

  • capture2.jpg
    capture2.jpg
    26.2 KB · Affichages: 17
@pat66 (salut cp4, juvaxe)

pour le mot de passe, c'est inutile de mettre des parenthèses ; pour la 2ème erreur "membre de méthode ou de données introuvable", désolé, c'est ma faute : y'a 2 instructions qui dépendent en fait de Application et pas de ThisWorkbook (d'ailleurs, c'est ce que tu avais fait au départ ; donc il semble qu'il fallait juste ajouter la déprotection du classeur, puisqu'elle n'y était pas dans ton post #3) ; j'ai testé le code ci-dessous : compilation et exécution : ok, pas de plantage ; à toi de vérifier si ça fait bien le résultat attendu sur les fichiers que tu utilises en réalité.​

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.Unprotect "aze"
  Application.DisplayFullScreen = 0
  Application.CommandBars("Ply").Enabled = -1
  ThisWorkbook.Saved = -1
End Sub

si tout est ok : parfait ! 😊 sinon, essaye en remplaçant ThisWorkbook par ActiveWorkbook :

VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ActiveWorkbook.Unprotect "aze"
  Application.DisplayFullScreen = 0
  Application.CommandBars("Ply").Enabled = -1
  ActiveWorkbook.Saved = -1
End Sub

à part ça, et sans tes fichiers, j'ai rien d'autre à proposer.

soan
 
re,

le classeur se ferme normalement, le classeur suivant s'ouvre toujours en plein écran mais Application.CommandBars("Ply").Enabled = -1 est bien désactivé, je dois avoir une procédure qui intercepte après tout c'est pas grave je ferais avec, merci quand même pour votre aide

Cdt

Pat66
 
Bonsoir, voici la solution à mon problème grâce à votre aide


VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ret As Integer
ret = MsgBox("Souhaitez vous fermer ce classeur ?", vbYesNo + vbInformation)
If ret = vbNo Then
Cancel = True
Else
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.CommandBars("Ply").Enabled = -True
Application.CommandBars("Cell").Enabled = True
Application.CellDragAndDrop = True
Application.DisplayFullScreen = False
Application.ScreenUpdating = False
Application.EnableEvents = True
Application.DisplayAlerts = True
ThisWorkbook.Saved = True
End If
End Sub

Merci pour votre aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour