Imprimer une plage sur le recto et une autre sur le verso

  • Initiateur de la discussion Initiateur de la discussion Chris57
  • 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 !

Chris57

XLDnaute Occasionnel
Bonjour à tous

j'ai un fichier contenant 2 plages qui se suivent (la première est B4:O62 et la seconde B63:0121)
Je dois imprimer ce document en recto verso, l'imprimante étant prévue pour.

Le problème est que certains utilisateurs modifient la hauteur de certaine lignes, ce qui modifie la plage de la page 1.

Je voudrais figer ces plages par macro.

J'ai tenté un système par saut de page :
Code:
    ActiveSheet.PageSetup.PrintArea = "$B$4:$O$121"
    ActiveSheet.ResetAllPageBreaks
    Set ActiveSheet.HPageBreaks(1).Location = Range("B63")
    Set ActiveSheet.VPageBreaks(1).Location = Range("P121")

mais ça me fait une erreur dans la dernière ligne
En fait lorsqu'il fait le HPageBreaks il modifie automatiquement le zoom de l'impression !


PS : la macro concernée est lancée par le bouton rouge en haut "REFAIRE MISE EN PAGE"
 

Pièces jointes

Re : Imprimer une plage sur le recto et une autre sur le verso

Bonjour Chris57,

Pas besoin de sauts de page :

Code:
Sub Imprimer()
With ActiveSheet.PageSetup
  .FitToPagesWide = 1
  .FitToPagesTall = 1
  .PrintTitleRows = "$4:$6" 'en-tête
  .PrintArea = "$B$4:$O$62"
  ActiveSheet.PrintOut
  MsgBox "Retournez la feuille avant d'appuyer sur OK..."
  .PrintArea = "$B$63:$O$121"
  ActiveSheet.PrintOut
End With
End Sub
La MsgBox donne le temps de retourner la feuille.

A+
 
Re : Imprimer une plage sur le recto et une autre sur le verso

Bonjour Chris57, le forum,

En effet il faut un saut de page :

Code:
Sub Imprimer()
Dim z As Integer
ActiveSheet.ResetAllPageBreaks
ActiveSheet.HPageBreaks.Add Rows(63) 'saut de page
With ActiveSheet.PageSetup
  .PrintTitleRows = "$4:$6" 'en-tête
  For z = 100 To 10 Step -1
    .PrintArea = "$B$4:$O$121"
    .Zoom = z
    If ExecuteExcel4Macro("GET.DOCUMENT(50)") = 2 Then Exit For
  Next
  ActiveSheet.PrintOut
End With
End Sub
La fonction macro Excel 4.0 GET.DOCUMENT(50) renvoie le nombre de pages à imprimer.

A+
 
Re : Imprimer une plage sur le recto et une autre sur le verso

Re,

Une variante sans doute meilleure :

Code:
Sub Imprimer()
Dim z As Integer
With Feuil1 'CodeName, à adapter
  .ResetAllPageBreaks
  .HPageBreaks.Add Rows(63) 'saut de page
  With .PageSetup
    .PrintTitleRows = "$4:$6" 'en-tête
    For z = 100 To 10 Step -1
      .PrintArea = "$B$4:$O$121"
      .Zoom = z
      If .Parent.HPageBreaks.Count = 1 Then Exit For
    Next
  End With
  .PrintOut 'impression
End With
End Sub
A+
 
Re : Imprimer une plage sur le recto et une autre sur le verso

ça a l'air de coller !!

merci !!!!!!!!!!!


par contre je pige pas la boucle avec le zoom. ça sert à quoi ???


[EDIT] non ça ne marche pas finalement. A la réouverture du classeur la mise en page est corrompue après ta macro.
Il semble qu'il n'arrive pas à trouver le bon zoom. Il devrait être dans le cas actuel à 60% et il se met tout seul à 65%
 
Dernière édition:
- 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

Retour