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

Aperçu avant impression très long à s'afficher

  • Initiateur de la discussion Initiateur de la discussion cibleo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

cibleo

XLDnaute Impliqué
Bonjour le forum,

Dans ThisWorkbook, j'ai placé cette procédure événementielle qui me formate le pied de page et l'en-tête de page d'une soixantaine de feuilles de calcul de mon fichier. (7 pages à visualiser par feuilles)

Aussi, quand je veux appliquer un aperçu avant impression sur l'une de ces feuilles, le traitement est très long puisque cette macro doit toutes les passer en revue si j'ai bien compris.

N'y a t-il pas une solution pour réduire ce temps d'attente ?

Dois-je placé un événement dans chaque fenêtre de code de mes différentes feuilles concernées, cela me paraît plutôt fastidieux 🙁

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim datejour
Dim moistravail
Dim ws As Worksheet
Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> "Feuil1" And ws.Name <> "Fériés" Then
datejour = Format(Now, "dddd dd mmmm yyyy à hh:mm")
moistravail = Format("mmmm yyyy")
ws.PageSetup.CenterHeader = "&""Verdana,Normal""&22Temps de travail effectué : " & Format(Range("B2").Value, "mmmm yyyy")
ws.PageSetup.LeftFooter = "&""Verdana,Normal""&12Feuille de pointage de " & Range("A2").Value
ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & datejour
ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"
    End If
Next ws
Application.ScreenUpdating = True
End Sub

Merci de votre aide

Cibleo
 
Re : Aperçu avant impression très long à s'afficher

Salut Cibleo,

Pourquoi ne pas appliquer effectivement ce code seulement à la feuille active !?

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim DateJour, MoisTravail, Ws As Worksheet
Application.ScreenUpdating = False
' Définir la feuille active comme feuille à traiter
[COLOR=darkgreen][B]Set Ws = ActiveSheet[/B][/COLOR]
If Ws.Name <> "Feuil1" And Ws.Name <> "Fériés" Then
  DateJour = Format(Now, "dddd dd mmmm yyyy à hh:mm")
  MoisTravail = Format("mmmm yyyy")
  Ws.PageSetup.CenterHeader = "&""Verdana,Normal""&22Temps de travail effectué : " & Format(Range("B2").Value, "mmmm yyyy")
  Ws.PageSetup.LeftFooter = "&""Verdana,Normal""&12Feuille de pointage de " & Range("A2").Value
  Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
  Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"
End If
[COLOR=darkgreen][B]Set Ws = Nothing[/B][/COLOR]
Application.ScreenUpdating = True
End Sub

Voili, voilà 😉

A+
 
Re : Aperçu avant impression très long à s'afficher

Bonsoir le forum,

Je reviens sur la macro événementielle ci-dessus pour la complèter avec l'instruction suivante :

Code:
If Left(.Name, 5) = "Recap" Then

En effet mon fichier contient 5 feuilles dont les noms commencent par le mot "Recap", j'aimerais y associer le pied de page suivant et figurant déjà dans la procédure initiale.

Code:
Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"
Comment imbriquer cette nouvelle condition ? J'ai encore beaucoup de difficultés à structurer une procédure 🙁

Pour être clair, si mes feuilles de calcul commencent par le mot "Recap" alors les 2 lignes décrites ci-dessus et seulement celles-ci.

Merci de votre aide

Cibleo
 
Re : Aperçu avant impression très long à s'afficher

Salut Cibleo,

Haaaa pas facile la vie d'XLDnaute 😀

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim DateJour, MoisTravail, Ws As Worksheet
Application.ScreenUpdating = False
' Définir la feuille active comme feuille à traiter
[COLOR=darkgreen][B]Set Ws = ActiveSheet[/B][/COLOR]
If Ws.Name <> "Feuil1" And Ws.Name <> "Fériés" Then
  DateJour = Format(Now, "dddd dd mmmm yyyy à hh:mm")
  MoisTravail = Format("mmmm yyyy")
  Ws.PageSetup.CenterHeader = "&""Verdana,Normal""&22Temps de travail effectué : " & Format(Range("B2").Value, "mmmm yyyy")
  Ws.PageSetup.LeftFooter = "&""Verdana,Normal""&12Feuille de pointage de " & Range("A2").Value
[COLOR=blue][B]  If Left(ws.name,5) = "Recap" then
[/B][/COLOR]    Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
    Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"
[COLOR=blue][B]  End If
[/B][/COLOR]End If
[COLOR=darkgreen][B]Set Ws = Nothing[/B][/COLOR]
Application.ScreenUpdating = True
End Sub

A+
 
Re : Aperçu avant impression très long à s'afficher

Salut BrunoM45,

Avoues que ce n'est pas trop mal pour un débutant comme moi 😛😛

Tu sais avant de rédiger un post, je fais toujours un tas de recherche 🙄

A ce rytme là, je vais finir par bronzer devant mon écran et les pages de mes bouquins 😀😀😀

Bon maintenant, je vais tester même si je sais que c'est tout bon.

Amicalement Cibleo
 
Re : Aperçu avant impression très long à s'afficher

Re BrunoM45,

J'ai parlé trop vite, çà ne colle pas 😕😕

Mes feuilles nommées RecapJluc, RecapJfran etc... affichent un pied de page identique au précédent code.

Je crois que cela prend en compte déjà la 1ère condition puis la 2ème.
Code:
If Ws.Name <> "Feuil1" And Ws.Name <> "Fériés" Then

Il faut peut-être inverser l'ordre des conditions comme lorsque l'on veut appliquer plusieurs mises en forme conditionnelle à une cellule ?

Cibleo
 
Re : Aperçu avant impression très long à s'afficher

Re,

Avoues que ce n'est pas trop mal pour un débutant comme moi
Oui, c'est clair, tu te débrouilles vraiment bien

A ce rytme là, je vais finir par bronzer devant mon écran et les pages de mes bouquins
Remarque, chez soi ça peut être pratique, ça vite les coups de soleil 🙂

Mes feuilles nommées RecapJluc, RecapJfran etc... affichent un pied de page identique au précédent code.
Je crois que cela prend en compte déjà la 1ère condition puis la 2ème.
Tout dépend de ce que tu veux avoir en entête et pied de page !?

Le code comme je l'ai modifié,
Pour toutes les feuilles sauf "Feuil1" et "Fériés"
Tu as obligatoirement les entêtes et pied de page suivant
Code:
  Ws.PageSetup.CenterHeader = "&""Verdana,Normal""&22Temps de travail effectué : " & Format(Range("B2").Value, "mmmm yyyy")
  Ws.PageSetup.LeftFooter = "&""Verdana,Normal""&12Feuille de pointage de " & Range("A2").Value

+ pour celles qui commencent par "Recap", tu as
Code:
  If Left(ws.name,5) = "Recap" then
    Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
    Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"
[COLOR=red][B] Else[/B][/COLOR]
[COLOR=red][B]   Ws.PageSetup.CenterFooter =""[/B][/COLOR]
[COLOR=red][B]   Ws.PageSetup.RightFooter =""[/B][/COLOR]
  End If

Qu'est-ce qui ne va pas !?

Haaaa, je sais peut-être qu'il faut que tu rajoutes le code en rouge 😉

A+
 
Dernière modification par un modérateur:
Re : Aperçu avant impression très long à s'afficher

Bonsoir le Forum
Bonsoir BrunoM45,

Voilà çà fait maintenant 1 heure que je m'arrache les cheveux pour une simple conjugaison de conditions.

En reprenant les solutions de Bruno, j'ai essayé de résoudre le problème tout seul mais n'y suis pas arrivé. 😡

Je vais reprendre tout à zéro car j'ai du mal m'exprimer 🙁

Pour les feuilles qui commencent par Recap, seulement ceci.

Code:
Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"

Pour toutes les feuilles sauf "Feuil1" et "Fériés" (quand je dis : sauf "Feuil1" et "Fériés", les feuilles Recap sont incluses dedans)

Les données en rouge ne doivent pas figurer dans les feuilles Recap.
Code:
[COLOR=red]Ws.PageSetup.CenterHeader = "&""Verdana,Normal""&22Temps de travail effectué : " & Format(Range("B2").Value, "mmmm yyyy")[/COLOR]
[COLOR=red]Ws.PageSetup.LeftFooter = "&""Verdana,Normal""&12Feuille de pointage de " & Range("A2").Value[/COLOR]
Ws.PageSetup.CenterFooter = "&""Verdana,Normal""&12Imprimé le " & DateJour
Ws.PageSetup.RightFooter = "&""Verdana,Normal""&12Page &P sur &N pages"

Pour les feuilles "Feuil1" et "Fériés" : Rien du tout

En résumé, le code marche bien sur toutes mes feuilles sauf sur les feuilles Recap (Pied de page gauche et en-tête central en trop)

J'ai vraiment du mal ce soir 😱

Merci de votre aide Cibleo
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
8 K
Compte Supprimé 979
C
Réponses
1
Affichages
961
Compte Supprimé 979
C
M
Réponses
10
Affichages
1 K
peper-eliot
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…