Sub PrintArea()
Dim CM As Variant, C As Variant
Dim RM As Variant, R As Variant
Dim I As Long
With Worksheets("Feuil1")
' Sauvegarde des lignes et colonnes masquées
With .UsedRange
For I = .Column To .Column + .Columns.Count - 1
If .Columns(I).Hidden = True Then CM = CM & I & " "
Next
For I = .Row To .Row + .Rows.Count - 1
If .Rows(I).Hidden = True Then RM = RM & I & " "
Next
End With
' Affichage des areas désirés avant impression
.Columns.Hidden = True
.Rows.Hidden = True
For Each Adr In Array("A1:B2", "A5:B7")
With .Range(Adr)
.Columns.Hidden = False
.Rows.Hidden = False
End With
Next
.PrintPreview
' Rétablissement de la feuille à son état d'origine
.Columns.Hidden = False
.Rows.Hidden = False
For Each C In Split(Trim(CM)): .Columns(Val(C)).Hidden = True: Next
For Each R In Split(Trim(RM)): .Rows(Val(R)).Hidden = True: Next
Application.Goto .Cells(1, 1), True
End With
End Sub