Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim deb&, n&
deb = 1 '1ère ligne d'impression, à adapter
n = Val(InputBox("Nombre de lignes à imprimer :", "Imprimer"))
If n < 1 Or deb + n - 1 > Rows.Count Then Cancel = True: Exit Sub
ActiveSheet.PageSetup.PrintArea = _
Intersect(ActiveSheet.UsedRange, Rows(deb & ":" & deb + n - 1)).Address
End Sub
'ou bien
Private Sub Workbook_BeforePrint(Cancel As Boolean)
ActiveSheet.PageSetup.PrintArea = [A1].CurrentRegion.Address
End Sub