OVH Cloud OVH Cloud

App_WorkbookBeforeClose(...) ne se déclenche pas pour PERSO.XLS

2 réponses
Avatar
pierreau
Bonjour,

J'espère ne m'être pas trompé de forum.

J'ai écrit, en appliquant à la lettre les modèles proposés dans l'aide
en ligne de vba, un certain nombre de procédures DANS LE CLASSEUR
PERSO.XLS :

1) Dans un module de classe (appelé EventClassModule)
-----------------------------------------------------

Public WithEvents App As Application

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)

' se déclenche, d'après l'aide, à chaque demande de fermeture d'un
' classeur
'
Stop ' qui me permet de vérifier que cette routine se déclenche bien
' pour tous les classeurs (même atpvbaen.xls, PdfMaker.xla,
' Funcres.xla !)
' sauf PERSO.XLS

... mes instructions

End Sub

2) Dans le module ThisWorkBook
------------------------------

Private Sub Workbook_Open()
Stop ' pour vérifier qu'on y passe : pas de problème
InitializeApp
End Sub

3) Dans un module "normal"
--------------------------

Dim X As New EventClassModule
Sub InitializeApp()
Stop ' pour vérifier qu'on y passe : pas de problème
Set X.App = Application
End Sub

4) Pleins de macros et de fonctions personnalisées qui fonctionnent à
merveille

Je me demande s'il n'y a pas une référence qui me manque,
mais laquelle ?
Merci d'avance au super spécialiste qui pourra me dépanner.

Henry Aubert
http://hpa.free.fr
http://iae-paris.com

2 réponses

Avatar
Ange Ounis
Ça m'avait échappé jusqu'ici mais il semble bien en effet qu'Excel ferme le
Perso.xls sans tenir compte des événements associés à cette fermeture.
Contournement possible : une "bonne vieille" procédure Auto_Close.
Rajoute dans ton module "normal" :

Sub Auto_Close()
'tes instructions
MsgBox ThisWorkbook.Name
End Sub

----------
Ange Ounis
----------

Bonjour,

J'espère ne m'être pas trompé de forum.

J'ai écrit, en appliquant à la lettre les modèles proposés dans l'aide
en ligne de vba, un certain nombre de procédures DANS LE CLASSEUR
PERSO.XLS :

1) Dans un module de classe (appelé EventClassModule)
-----------------------------------------------------

Public WithEvents App As Application

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As
Boolean)

' se déclenche, d'après l'aide, à chaque demande de fermeture d'un
' classeur
'
Stop ' qui me permet de vérifier que cette routine se déclenche bien
' pour tous les classeurs (même atpvbaen.xls, PdfMaker.xla,
' Funcres.xla !)
' sauf PERSO.XLS

.... mes instructions

End Sub

2) Dans le module ThisWorkBook
------------------------------

Private Sub Workbook_Open()
Stop ' pour vérifier qu'on y passe : pas de problème
InitializeApp
End Sub

3) Dans un module "normal"
--------------------------

Dim X As New EventClassModule
Sub InitializeApp()
Stop ' pour vérifier qu'on y passe : pas de problème
Set X.App = Application
End Sub

4) Pleins de macros et de fonctions personnalisées qui fonctionnent à
merveille

Je me demande s'il n'y a pas une référence qui me manque,
mais laquelle ?
Merci d'avance au super spécialiste qui pourra me dépanner.

Henry Aubert
http://hpa.free.fr
http://iae-paris.com




Avatar
pierreau
Ah ! Merci !
Maintenant que je suis rassuré, je puis affirmer que ça marchait dans
les versions antérieures d'Excel. (Ca me permet de faire une sauvegarde
systématique des classeurs sur une liste de disques que j'ai dans la bas
de registre, en particulier sur une clé USB qui fait la liaison entre
domicile et boulot, et en particulier de perso.xls, dans lequel je ne
cesse d'améliorer de nombreuses macros et fonctions)

Y a'il une page chez Microsoft où signaler ce que je considère comme un
bug ?

Bien cordialement.

Henry Aubert


Ça m'avait échappé jusqu'ici mais il semble bien en effet qu'Excel ferme
le Perso.xls sans tenir compte des événements associés à cette fermeture.
Contournement possible : une "bonne vieille" procédure Auto_Close.
Rajoute dans ton module "normal" :

Sub Auto_Close()
'tes instructions
MsgBox ThisWorkbook.Name
End Sub

----------
Ange Ounis
----------


Bonjour,

J'espère ne m'être pas trompé de forum.

J'ai écrit, en appliquant à la lettre les modèles proposés dans l'aide
en ligne de vba, un certain nombre de procédures DANS LE CLASSEUR
PERSO.XLS :

1) Dans un module de classe (appelé EventClassModule)
-----------------------------------------------------

Public WithEvents App As Application

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As
Boolean)

' se déclenche, d'après l'aide, à chaque demande de fermeture d'un
' classeur
'
Stop ' qui me permet de vérifier que cette routine se déclenche bien
' pour tous les classeurs (même atpvbaen.xls, PdfMaker.xla,
' Funcres.xla !)
' sauf PERSO.XLS

.... mes instructions

End Sub

2) Dans le module ThisWorkBook
------------------------------

Private Sub Workbook_Open()
Stop ' pour vérifier qu'on y passe : pas de problème
InitializeApp
End Sub

3) Dans un module "normal"
--------------------------

Dim X As New EventClassModule
Sub InitializeApp()
Stop ' pour vérifier qu'on y passe : pas de problème
Set X.App = Application
End Sub

4) Pleins de macros et de fonctions personnalisées qui fonctionnent à
merveille

Je me demande s'il n'y a pas une référence qui me manque,
mais laquelle ?
Merci d'avance au super spécialiste qui pourra me dépanner.

Henry Aubert
http://hpa.free.fr
http://iae-paris.com