Excel problème avec BeforeClose
Résolu
ButteDuLac
Messages postés
495
Date d'inscription
Statut
Membre
Dernière intervention
-
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
Je suis prise dans un gouffre!
J'ai :
Et sur mon Userform1, j'ai deux boutons (1 = OK, 2 = Annuler) :
Le problème, est le suivant :
1. Si je quitte après avoir enregistré : tout se ferme, sans problème.
2. Si je quitte et que je n'ai pas enregistré :
--> Mon userform s'affiche
--> Les options 1 à 4 fonctionnent, mais dès que j'ai terminé et que je sors du userform, la macro BeforeClose revient à "UserForm1.Hide", et c'est le bogue. Si je débogue (avec Stop), peu importe ce que j'aurai choisi dans les options, le classeur se ferme.
--> Lorsque le classeur se ferme, l'application, elle ne se ferme pas (même si j'ai codé "Application.Quit"
Dans le fond, ce que je veux, c'est offrir à l'utilisateur le choix entre : enregistrer un fichier selon l'option 1, l'option 2 ou l'option 3, puis une fois cela fait, quitter Excel; sinon Quitter sans enregistrer; sinon, revenir au classeur (sans quitter, sans enregistrer).
Désolée si c'est long, je ne sais pas comment réduire le texte du code dans une fenêtre avec barre de défilement... et j'espère que ma question est claire!
Merci! (J'ai besoin d'une réponse rapide, si possible, je pars en vacances ce soir!)
J'ai :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Saved = True Then
Application.DisplayAlerts = False
Application.DisplayFullScreen = False
ActiveWindow.DisplayWorkbookTabs = True
Application.Quit
Else:
Application.DisplayAlerts = False
UserForm1.Show
Cancel = True
If ThisWorkbook.Saved = True Then
Application.DisplayAlerts = False
Application.DisplayFullScreen = False
ActiveWindow.DisplayWorkbookTabs = True
Application.Quit
End If
End If
End Sub
Et sur mon Userform1, j'ai deux boutons (1 = OK, 2 = Annuler) :
Private Sub CommandButton1_Click()
If Me.OptionButton1.Value = -1 Then
Choix_Rep
Unload UserForm1
UserForm1.Hide
ElseIf Me.OptionButton2.Value = -1 Then
Enr_mod
Unload UserForm1
UserForm1.Hide
ElseIf Me.OptionButton3.Value = -1 Then
Choix_Rep2
Unload UserForm1
UserForm1.Hide
ElseIf Me.OptionButton4.Value = -1 Then
If MsgBox("Toutes vos modifications non enregistrées seront perdues", vbOKCancel, "Attention!") = vbOK Then
ThisWorkbook.Close Savechanges:=False
ThisWorkbook.Saved = True
Unload UserForm1
UserForm1.Hide
Else: Cancel = True
ThisWorkbook.Saved = False
Unload UserForm1
UserForm1.Hide
End If
Else: MsgBox "Vous devez faire un choix, ou annuler."
End If
End Sub
Private Sub CommandButton2_Click()
Unload Me
ThisWorkbook.Saved = False
End Sub
Le problème, est le suivant :
1. Si je quitte après avoir enregistré : tout se ferme, sans problème.
2. Si je quitte et que je n'ai pas enregistré :
--> Mon userform s'affiche
--> Les options 1 à 4 fonctionnent, mais dès que j'ai terminé et que je sors du userform, la macro BeforeClose revient à "UserForm1.Hide", et c'est le bogue. Si je débogue (avec Stop), peu importe ce que j'aurai choisi dans les options, le classeur se ferme.
--> Lorsque le classeur se ferme, l'application, elle ne se ferme pas (même si j'ai codé "Application.Quit"
Dans le fond, ce que je veux, c'est offrir à l'utilisateur le choix entre : enregistrer un fichier selon l'option 1, l'option 2 ou l'option 3, puis une fois cela fait, quitter Excel; sinon Quitter sans enregistrer; sinon, revenir au classeur (sans quitter, sans enregistrer).
Désolée si c'est long, je ne sais pas comment réduire le texte du code dans une fenêtre avec barre de défilement... et j'espère que ma question est claire!
Merci! (J'ai besoin d'une réponse rapide, si possible, je pars en vacances ce soir!)