Excel problème avec BeforeClose

Résolu/Fermé
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 21 avril 2017 à 18:36
Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 - 21 avril 2017 à 19:09
Je suis prise dans un gouffre!

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

1 réponse

Kalissi Messages postés 218 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
21 avril 2017 à 19:09
Bonjour,

Première observation :


1 Else: Cancel = True
2 ThisWorkbook.Saved = False
3 Unload UserForm1
4 UserForm1.Hide


L'instruction 4 ne peut s'opérer après l'instruction 3.
Inverser 3 et 4.

K
0