Workbook_BeforeClose depuis un Userform

Salut à tous,

Je mets quasi systématiquement dans mes programmes un petit "Workbook_BeforeClose" permettant de laisser les autres fichiers Excel ouvert. Cela fonctionne parfaitement quand je ferme Excel.

Sub Workbook_BeforeClose(Cancel As Boolean)

    If ThisWorkbook.ReadOnly Then
        If Workbooks.Count = 1 Then
            Application.DisplayAlerts = False
            Application.Quit
        Else
            Application.Visible = True
            Me.Close False
        End If
    Else
        Me.Save
    End If

End Sub

Cette fois, je souhaiterai fermer Excel directement depuis le userform. J'ai donc créé mon bouton avec pour instruction un Unload.Me et un ThisWorkbook.Close mais il me demande systématiquement si je souhaite enregistrer, pourtant je pense avoir correctement rédigé le sub avec le DisplayAlert d'un côté et le Me.Close False . Auriez-vous une idée ?

Cordialement.

Alors avec un ThisWorkbook.Close False cela semble fonctionner mais sans sauvegarder, j'ai donc l'impression qu'il ne passe pas par le "Workbook_BeforeClose" donc pas une solution.

salut ! as-tu pensé à mettre du code sur

Private Sub UserForm_Terminate()
....
End Sub

Salut Karim, non je n'ai jamais utilisé Userform_Terminate en général je Unload direct dans à la fin de mon sub principal.

bonjour Heelflip

avec un "Application.EnableEvents = False" dans votr userform et avant le "Me.Close False", je suppose que vous ne passerez pas "Workbook_Close" (je ne l'ai pas testé)

Salut BsAlv,

Alors j'ai fait un test avec un point d'arrêt, le programme passe bien par "Workbook_Close", c'est après le Me.Save qu'il me demande si je veux sauvegarder.

Si je quitte Excel via la croix, il sauvegarde et quitte tout seul, si je passe par le Userform, il me demande si je veux enregistrer quand même, j'ai du louper un truc je vais regarder de nouveau ce soir.

re,

avec un fichier, normallement vous ne pouvez plus passer ce "workbook_BeforeClose"

14heelflip.xlsb (15.96 Ko)
OK c'est good, je suis passé après le
Unload
par un
ThisWorkbook.Close True
. Le tout en changeant légèrement le
Sub Workbook_BeforeClose
ce qui donne
Private Sub Workbook_BeforeClose(Cancel As Boolean)

    Application.DisplayAlerts = False

    If ThisWorkbook.ReadOnly Then
        If Workbooks.Count = 1 Then
            Application.Quit
        Else
            Application.Visible = True
            Me.Close False
        End If
    Else
        If Workbooks.Count = 1 Then
            Me.Save
            Application.Quit
        Else
            Application.Visible = True
            Me.Save
        End If
    End If

End Sub
Et cette fois toutes les manip fonctionnent bien, bon pas 100% propre car lors le
Application.Visible
lance un petit jeu de fenêtres un peu moche mais on s'en contentera
Rechercher des sujets similaires à "workbook beforeclose userform"