Private Sub Workbook_BeforePrint(Cancel As Boolean) 'Utilis & Chr(10) &
Dim VPB As VPageBreak, HPB As HPageBreak
Dim No As String, Dt As String
Application.ScreenUpdating = False
'formater en vue d'impression
With ActiveSheet
'reset parametres d'impression
.ResetAllPageBreaks
With .PageSetup
'redefinition de la plage d'impression 13 lignes dessous MTTC
.PrintArea = "$C$1:$M$" & [MTTC].Row + 13
'pas de parametre de mise en page
.CenterHeader = ""
.CenterFooter = ""
End With
'passage en break preview sinon erreur avec DragOff
ActiveWindow.View = xlPageBreakPreview
'déplacement des sauts de page
For Each VPB In .VPageBreaks
'Cette méthode fait glisser un saut de page hors de la zone d’impression.
VPB.DragOff Direction:=xlToRight, RegionIndex:=1
Next VPB
'retour à vue normale
ActiveWindow.View = xlNormalView
'ajout de ligne avant et après chaque saut de page pour délimiter le cadre lors de l'impression
'On parcourt la collection des Sauts de pages (HPageBreaks)
For Each HPB In .HPageBreaks
' HPB.Location est la première cellule juste en bas du saut de page
'Donc HPB.Location.row-1 est la ligne juste avant le saut de page
.Range(.Cells(HPB.Location.Row - 1, 3), .Cells(HPB.Location.Row - 1, 12)).Borders(xlEdgeBottom).LineStyle = xlContinuous
'et C'est la plage allant de la 3ème colonne à la 12ème de la ligne juste en dessus du saut de page
.Range(.Cells(HPB.Location.Row, 3), .Cells(HPB.Location.Row, 12)).Borders(xlEdgeTop).LineStyle = xlContinuous
'prochain saut
Next HPB
End With
Application.ScreenUpdating = True
End Sub