Signaler

Excel problème avec BeforeClose

Posez votre question ButteDuLac 484Messages postés jeudi 5 mars 2009Date d'inscription 21 avril 2017 Dernière intervention - Dernière réponse le 21 avril 2017 à 19:09 par Kalissi
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 
Utile
+0
plus moins
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
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !