Excel problème avec BeforeClose [Résolu]

ButteDuLac 488 Messages postés jeudi 5 mars 2009Date d'inscription 4 octobre 2017 Dernière intervention - 21 avril 2017 à 18:36 - Dernière réponse : Kalissi 162 Messages postés jeudi 2 mai 2013Date d'inscription 1 décembre 2017 Dernière intervention
- 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!)
Afficher la suite 

1 réponse

Répondre au sujet
Kalissi 162 Messages postés jeudi 2 mai 2013Date d'inscription 1 décembre 2017 Dernière intervention - 21 avril 2017 à 19:09
0
Utile
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
Commenter la réponse de Kalissi