Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro automatique à l'ouverture de tous les classeurs et insertion de feuille

thierry.bayard

XLDnaute Junior
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.

Merci d'avance pour votre aide
 

Pierrot93

XLDnaute Barbatruc
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
 
Dernière édition:

thierry.bayard

XLDnaute Junior
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...

Bon après-midi
 

Pierrot93

XLDnaute Barbatruc
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"...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…