[VBA-E] Évènement - Fermeture d'un autre fichier

Salut le Forum,

Après vous avoir embêter pour avoir un code s’exécutant à l'ouverture d'un autre fichier Excel (encore merci à Dhany pour son retour : https://forum.excel-pratique.com/viewtopic.php?f=2&t=120016&p=731089&hilit=fichier#p731089), je viens cette fois ci car j'aimerais trouver un code s’exécutant avant la fermeture d'un autre fichier Excel!

En gros si l'utilisateur ferme un fichier, il faut que celui-ci aille s'enregistrer dans un dossier temp pour des raisons x ou y !

J'ai bien essayé :

Private Sub Workbook_Close (Cancel as Boolean)
MsgBox "x"
End If

ou encore :

Private Sub App_WorkbookClose(ByVal Wb As Excel.Workbook)
MsgBox "x"
End Sub

Et aussi avec les "BeforeClose" mais sa ne marche pas :p

Quelqu'un a t'il une idée?

Merci d'avance!

Bonjour Juice,

Dans ton 1er code VBA, il y a un espace en trop avant la parenthèse :

Private Sub Workbook_Close (Cancel as Boolean)

et l'évènement Workbook_Close() n'existe pas ; mais en principe, ceci devrait marcher :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  MsgBox "x"
End Sub

(sans espace avant la parenthèse)

dhany

Bonjour dhany,

Encore une fois, merci pour ton retour

Le code [...]

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  MsgBox "x"
End Sub

[...] fonctionne pour le classeur où il est placé mais pas pour un autre classeur :/

Je vais continué à chercher de mon côté aussi

Re- !

J'ai finalement trouvé le code ci-dessous :

A placer dans le ThisWorkbook :

'https://www.generation-nt.com/reponses/evenement-fermeture-classeur-entraide-564441.html
Dim MonXL As New App
Private Sub Workbook_Open()
Set MonXL.App = Application
End Sub

A placer dans un module de classe renommé "App"

Public WithEvents App As Application
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
MsgBox "ok"
End Sub

Voilà! Le message "ok" s'affichera à la fermeture de n'importe quelle classeur

Bonjour,

Nul besoin d'utiliser un module de classe. Tout peut être placé dans ThisWorkbook.

Public WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application   'assigne la variable objet App à l'application Excel en cours
End Sub

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
    MsgBox "ok"
End Sub

Bonjour!

Ah effet sa fonctionne :0

Plus c'est concis, mieux c'est !

Merci Thev!

Rechercher des sujets similaires à "vba evenement fermeture fichier"