Bonjour,
J'essaie de créer une macro sur perso.xls de façon à paramétrer le pied de page de l'ensemble des classeurs et des feuilles :
- à chaque ouverture ou création de classeur
- à chaque insertion de feuille
- avant chaque impression (même si ca fait doublon mais je ne sais pas comment ca fonctionne avec les feuilles créées automatiquement pour les tableaux croisés dynamique par exemple).
Pour le moment, j'ai fait cela :
- Création d'un module de classe :
Code:
Public WithEvents App As Application
Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook)
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
Sheets(1).Select
With ActiveSheet.PageSetup
.LeftFooter = "&Z&F&A"
End With
Next
Application.ScreenUpdating = True
End Sub
Private Sub App_Workbook_NewSheet(ByVal Sh As Object)
Application.ScreenUpdating = False
ActiveSheet.PageSetup.LeftFooter = "&Z&F&A"
Application.ScreenUpdating = True
End Sub
Private Sub App_Workbook_BeforePrint(Cancel As Boolean)
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
Sheets(1).Select
With ActiveSheet.PageSetup
.LeftFooter = "&Z&F&A"
End With
Next
Application.ScreenUpdating = True
End Sub
Ensuite sous ThisWorbook, j'ai ça :
Code:
Dim ApplicationClass As New Classe1
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Workbooks("perso.xls").Activate
Set ApplicationClass.App = Application
End Sub
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Workbooks("perso.xls").Activate
Set ApplicationClass.App = Application
End Sub
Private Sub Workbook_Open()
Workbooks("perso.xls").Activate
Set ApplicationClass.App = Application
End Sub
Résultat : lors de l'ouverture d'excel, le pied de page est inséré. Par contre, ça ne marche pas lors de l'insertion d'une feuille, lors de l'ouverture d'un autre classeur, de la création d'un nouveau classeur (lorsque Excel est ouvert) et lors de l'impression.
Re : Macro automatique à l'ouverture de tous les classeurs et insertion de feuille
Bonjour,
perso, plutôt que le classeur de macro personnelles, j'utiliserais une macro complémentaire... le code ci-dessous placé dans le module "thisworkbook" devrait suffire, à tester :
Code:
Option Explicit
Private WithEvents MonExcel As Application
Private Sub Workbook_Open()
Set MonExcel = Application
End Sub
Private Sub MonExcel_WorkbookBeforePrint(ByVal Wb As Workbook, Cancel As Boolean)
Dim ws As Worksheet
For Each ws In Wb.Windows(ActiveWindow.Index).SelectedSheets
ws.PageSetup.LeftFooter = "&Z&F&A"
Next ws
End Sub
bon après midi
@+
Edition : enlever la procédure "MonExcel_WorkbookOpen" inutile ici
Re : Macro automatique à l'ouverture de tous les classeurs et insertion de feuille
Merci pour ta réponse,
Je vais essayer de la mettre en application. Par contre, je ne suis pas a l'aise avec les macros complémentaires : je vais me renseigner la dessus pour savoir comment les créer, enregistrer, appliquer à tous les classeurs...
Re : Macro automatique à l'ouverture de tous les classeurs et insertion de feuille
Re,
copie le code donné dans le module "thisworkbook" d'un nouveau classeur, ensuite tu fais un "enregistré sous" en selectionnant le type de fichier "macro complémentaire excel"... pour l'installer, onglet "développeur" bouton "compléments"...