Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec Evenement Application

1 réponse
Avatar
bonero
Bonjour tout le monde,
Quelqu ‘un aurait il la gentillesse de m’expliquer pourquoi mon code ne marche pas ? en fait je veux afficher un message a chaque ouverture de tout classeur Excel existant sur mon pc.(cad un classeur qui a ete deja enregistré).

Dans un module de classe nommé ClassApp je mets :
Public WithEvents XL As Application
Private Sub XL_WorkbookOpen(ByVal Wb As Excel.Workbook)
MsgBox "Ouverture du classeur : " & Wb.FullName
End Sub


Dans un module standard je mets :
Dim X As New ClassApp
Sub Init()
Set X.XL = Application
End sub

Dans le module de code de ThisWorkbook :

Private Sub Workbook_Open()

Call Init
End Sub

Merci de m’expliquer si j’ai oublié de rajouter quelque chose ou il y a quelque de trop. J’utilise excel2007.

Cordiallement.

1 réponse

Avatar
michdenis
Bonjour,

Ton code fonctionne très bien.

'------------------------
Private Sub Workbook_Open()
Call Init
End Sub
'------------------------
Comme cette procédure lance l'instance de la classe objet "ClassApp"
et que la procédure "Workbook_Open" s'exécute à l'ouverture du classeur,
tu dois fermer le classeur et le rouvrir pour que tout le processus se mette
en branle.
Si tu ajoutes cette classe objet à partir d'un classeur particulier, il faudra que
ce classeur soit ouvert pour que l'instance existe...et, à sa fermeture, l'instance
disparaîtra avec le classeur.
Cependant si tu as un classeur "Perso.xls", ajoute ce tout ce code à ce dernier
et comme ton classeur Perso. s'ouvre et se ferme en même temps que l'application
Excel, l'instance de la classe objet "ClassApp" sera disponible durant toute la
session où Excel sera ouvert.





--
MichD
--------------------------------------------


"bonero" a écrit dans le message de groupe de discussion :

Bonjour tout le monde,
Quelqu ‘un aurait il la gentillesse de m’expliquer pourquoi mon code ne marche
pas ? en fait je veux afficher un message a chaque ouverture de tout classeur
Excel existant sur mon pc.(cad un classeur qui a ete deja enregistré).

Dans un module de classe nommé ClassApp je mets :
Public WithEvents XL As Application
Private Sub XL_WorkbookOpen(ByVal Wb As Excel.Workbook)
MsgBox "Ouverture du classeur : " & Wb.FullName
End Sub


Dans un module standard je mets :
Dim X As New ClassApp
Sub Init()
Set X.XL = Application
End sub

Dans le module de code de ThisWorkbook :

Private Sub Workbook_Open()

Call Init
End Sub

Merci de m’expliquer si j’ai oublié de rajouter quelque chose ou il y a quelque
de trop. J’utilise excel2007.

Cordiallement.