[COLOR=Blue]Intégrer une macro à tous les classeurs [/COLOR]
Quelle est la possibilité la plus simple d'intégrer une macro, par exemple: PrivateSub Workbook_BeforePrint (Cancel As Boolean) aux différents classeurs.
Supposons que tu veuilles, avant d'imprimer n'importe quel classeur, que le nom
et le chemin de ce classeur soit automatiquement insérés en bas de page à gauche
et le jour et l'heure d'impression en bas de page à droite.
Le plus simple (à mon avis en tout cas) pour obtenir ce résultat est d'utiliser
une instance personnalisée d'Excel, créée dans un module de classe. En déclarant
dans ce module de classe une variable avec le mot clé WithEvents, il devient
possible de "redéfinir" les procédures événementielles de l'application Excel,
ce qui permet d'appliquer à tous les classeurs un traitement personnalisé.
Concrètement, dans un nouveau classeur, insère un module de classe, change sa
propriété (Name) en, par exemple, ExcelApplication (au lieu de Class1) et
recopie dans ce module le code suivant :
'======code module de classe
Public WithEvents AppXl As Application
Private Sub AppXl_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
For Each Feuille In ActiveWindow.SelectedSheets
With Feuille.PageSetup
.LeftFooter = Wb.FullName
.RightFooter = "Imprimé le &D à &T"
End With
Next
End Sub
'===========================
Reste à "rattacher" ton instance d'Excel à l'application en cours. Dans le
module ThisWorkbook du classeur, recopie ce code :
'======module ThisWorkbook
Dim HookXL As New ExcelApplication 'le nom du module de classe
Private Sub Workbook_Open()
Set HookXL.AppXl = Application
End Sub
'=========================
Pour terminer enregistre ton classeur comme macro complémentaire, puis par
Outils\Macros complémentaires, installe ta macro en cochant son nom dans la
liste. Ouvre ensuite n'importe quel classeur et demande un aperçu avant
impression : tu dois voir en bas de page les prévues.
Remarque : en cas d'impression de plusieurs feuilles sélectionnées en groupe de
travail, l'écriture des bas de page va ralentir sensiblement la préparation de
l'impression. Même sur un seule feuille le ralentissement est perceptible.
Frédéric Sigonneau, (N°1114)