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

XL 2013 saut de page et mise en page automatique

don julio

XLDnaute Nouveau
Bonjour

Je souhaiterai automatiser une impression après avoir inseré des sauts de pages de façon a avoir toutes les colonnes sur une page et autant de pages que de saut de pages

J'ai mis en exemple ce que j'ai écris, mais je ne trouve pas la solution .

Merci de votre aide.

Bonne journée
 

Pièces jointes

  • test mise en page.xlsm
    81.3 KB · Affichages: 2
Solution
bonjour
rien de plus simple
tu détermine la plage utilisées (tu veux l'arrêter a "M" visiblement)
ensuite te reste plus qu'a déplacer les sauts de pages
on vire les marge les header et tout y cointi
bref le pagesetup on fait le minimum
et voila terminé tes tableaux seront chacun dans une page
même si ils n'auront pas la même dimension
et cette macro est valable pour toutes tes feuilles (test...)
VB:
Sub ImpressionModulé()
'patricktoulon (solution sur pc (2))
    Dim cel As Range, Plage As Range, hp&
    With ActiveSheet
        Set Plage = .UsedRange.Resize(, 13)    'on s'arrête a "M"
       
        'le minimum pour le page setup
        With .PageSetup
            .PrintArea = Plage.Address
            .PaperSize = xlPaperA4...

don julio

XLDnaute Nouveau
bonjour, merci pour la capture mais je cherche a automatiser ça pour mes collègues qui ne sont vraiment pas doué en informatique et pour qui définir une zone d'impression et gérer les saut de page est trop compliqué ...
 

patricktoulon

XLDnaute Barbatruc
bonjour
rien de plus simple
tu détermine la plage utilisées (tu veux l'arrêter a "M" visiblement)
ensuite te reste plus qu'a déplacer les sauts de pages
on vire les marge les header et tout y cointi
bref le pagesetup on fait le minimum
et voila terminé tes tableaux seront chacun dans une page
même si ils n'auront pas la même dimension
et cette macro est valable pour toutes tes feuilles (test...)
VB:
Sub ImpressionModulé()
'patricktoulon (solution sur pc (2))
    Dim cel As Range, Plage As Range, hp&
    With ActiveSheet
        Set Plage = .UsedRange.Resize(, 13)    'on s'arrête a "M"
       
        'le minimum pour le page setup
        With .PageSetup
            .PrintArea = Plage.Address
            .PaperSize = xlPaperA4
            .LeftMargin = 0
            .RightMargin = 0
            .TopMargin = 0
            .BottomMargin = 0
            .HeaderMargin = 0
            .FooterMargin = 0
            .CenterHorizontally = True
            .CenterVertically = True
            .Orientation = xlLandscape
        End With
        DoEvents
       
        'on déplace les sauts de pages au niveau des cellules fusionnées (titre de tableau)
        For Each cel In Plage.Columns(1).Cells
            If cel.MergeCells = True And cel.Row > 2 Then
                hp = hp + 1: Set .HPageBreaks(hp).Location = cel
            End If
        Next
        .PrintPreview
    End With
End Sub

et si tu veux les faires toutes sauf bien évidemment la feuille "x"

Code:
Sub GoPrintAll()
    Dim sh As Worksheet
    For Each sh In Worksheets
        If sh.Name <> "x" Then
            sh.Activate: ImpressionModulé
        End If
    Next
End Sub

voila te reste plus qu'a remplacer "printpreview" par "printout" pour imprimer vraiment

 
Dernière édition:

don julio

XLDnaute Nouveau
Au top merci beaucoup !!!!
Bonne journée!
 

Discussions similaires

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