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 .
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, 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é ...
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
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