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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
"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.
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.
"bonero" <nospam_prosper_gaglo@yahoo.fr> a écrit dans le message de groupe de discussion :
GJadnW71Sf2sdALR4p2dnAA@giganews.com...
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.
'------------------------ 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.
"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.