Sub impressionSurDeuxPages()
Dim fl1 As Worksheet
Dim PremiereLigne, PremiereColonne, DerniereLigne1
Dim PremiereLigne2, DerniereLigne2
Dim Plage, SautDePage
Set fl1 = Worksheets("Feuil1") 'FL1 => instance de la feuille de calculs
fl1.PageSetup.PrintArea = "" 'on supprime l'ancienne zone d'impression
'Adresses du premier tableau
PremiereLigne = fl1.UsedRange.Row
PremiereColonne = fl1.UsedRange.Column
'Plage du premier tableau
Plage = fl1.Range(Cells(PremiereLigne, PremiereColonne).Address).CurrentRegion.Address
'Avec split on obtient un tableau à deux dimensions 0 et 1, contenant l'adresse
'... de la première et de la dernière cellule de la plage
DerniereLigne1 = fl1.Range(Split(Plage, ":")(1)).Row 'on récupère la dernière ligne
'Lancer la macro d'édition du premier tableau
MiseEnPage fl1, Plage, 1
'Recherche de la dernière ligne renseignée de la feuille de calculs
DerniereLigne2 = fl1.Cells(65536, PremiereColonne).End(xlUp).Row
'Le second tableau existe-t-il :
PremiereLigne2 = fl1.Cells(DerniereLigne1, PremiereColonne).End(xlDown).Row
'Il n'existe pas si PremiereLigne2 = 65536 ou si = DerniereLigne1
If DerniereLigne2 <> 65536 And DerniereLigne2 > DerniereLigne1 Then
'un second tableau existe, on en établit la plage
Plage = fl1.Range(Cells(PremiereLigne2, PremiereColonne).Address).CurrentRegion.Address
'Lancer la macro d'édition du second tableau
MiseEnPage fl1, Plage, 2
End If
Set fl1 = Nothing
End Sub
Sub MiseEnPage(fl1, Plage, Dispo)
fl1.PageSetup.PrintArea = Plage
'On centre le tableau dans le page
With ActiveSheet.PageSetup
.Orientation = Dispo 'xlLandscape ou xlPortrait
.FitToPagesWide = 1
.FitToPagesTall = 1
.CenterHorizontally = True
.CenterVertically = True
End With
ActiveWindow.SelectedSheets.PrintPreview [COLOR="Red"]'Juste pour tester[/COLOR]
'ActiveSheet.PrintOut
End Sub