XL 2013 saut de page et mise en page automatique

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

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

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...
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
😉
demo.gif
 
Dernière édition:
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
😉
Regarde la pièce jointe 1194953
Au top merci beaucoup !!!!
Bonne journée!
 
- 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
7
Affichages
106
Réponses
1
Affichages
52
Réponses
4
Affichages
56
Réponses
2
Affichages
482
Réponses
4
Affichages
560
Réponses
6
Affichages
102
Retour