Intégrer une macro à tous les classeurs

Quelle est la possibilité la plus simple d'intégrer une macro 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 du 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.

Auteur :

Mots clefs associés à cette page : , , , , , ,