Sub TestSP()
SautsDePages Feuil1, 20
Feuil1.PrintPreview
End Sub
Sub SautsDePages(ByVal F As Worksheet, ByVal NbLignesPPageMax As Long)
Dim ZImpr As Range, ZEnt As Range, LDéb As Long, LAprèsFin As Long, _
NbLignes As Long, NbPg As Long, NbLpP As Long, L As Long
On Error Resume Next
Set ZImpr = F.Range(F.PageSetup.PrintArea)
If Err Then MsgBox "Veuillez définir une zone d'impression" _
& vbLf & "sur la feuille """ & F.Name & """.", vbCritical, "SautsDePages": Exit Sub
Set ZEnt = F.Range(F.PageSetup.PrintTitleRows)
On Error GoTo 0
If Not ZEnt Is Nothing Then LDéb = ZEnt.Row + ZEnt.Rows.Count Else LDéb = ZImpr.Row
LAprèsFin = ZImpr.Row + ZImpr.Rows.Count
NbLignes = LAprèsFin - LDéb
NbPg = ((NbLignes + NbLignesPPageMax - 1) \ NbLignesPPageMax)
NbLpP = NbLignes \ NbPg: If NbLpP * NbPg < NbLignes Then NbLpP = NbLpP + 1
F.ResetAllPageBreaks
L = LDéb: Do: L = L + NbLpP: If L >= LAprèsFin Then Exit Sub
F.HPageBreaks.Add F.Rows(L): Loop
End Sub