Ces ressources complètent les formations que nous proposons, en présenant des exemples ou en développant des points particuliers qui ne sont pas abordés pendant les formations par manque de temps.
La première idée qui vient à l'esprit est naturellement de créer un module Workbook_Open dans le conteneur ThisWorkBook. Mais le problème est que cette méthode impose de modifier chaque classeur pour activer cette macro.
Comment faire pour avoir une macro lancée quel que soit le classeur ouvert, sans faire de modification dans chaque classeur ?
Il faut écrire une classe qui permet de traiter les événements de la classe Application, puis affecter l'objet Application réel à cette nouvelle classe.
Par exemple, dans un module de classe appelé MonApp, tapez le code suivant :
Option Explicit
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
MsgBox ("Ouverture du classeur " & Wb.Name)
End Sub
Puis dans le conteneur ThisWorkBook du fichier de macro personnel (PERSO.XLS), instanciez la classe MonApp et écrivez un module Workbook_Open., comme celui-ci :
Option Explicit Dim MonExcel As New MonApp Private Sub Workbook_Open() Set MonExcel.App = Application End Sub
Tweeter
© Afsic Sarl 2004 - 2010 | SIRET 450 865 324 00021 | RCS Grenoble