Sub Print_One()
Dim Cel As Range, Plage As Range, PrintArea As String
Application.ScreenUpdating = False
For Each Cel In [T1:T6].Cells
If Cel Then ' La cellule a la valeur 1
On Error Resume Next ' Si jamais il n'y avait pas de formule dans la cellule
Z = Split(Split(Cel.Formula, "=")(1), "("): If Err Then Exit For
Set Plage = [A:J].Rows(Range(Z(1)).Row).Resize(55): If Err Then Exit For
On Error GoTo 0
' On insère un saut de page à la première ligne de "Page"
Plage.Rows(1).Select: ActiveWindow.View = xlPageBreakPreview
' On définit les zones à imprimer
PrintArea = IIf(PrintArea = "", "", PrintArea & ",") & Plage.Address
End If
Next
If PrintArea <> "" Then ' Quelque chose à imprimer
With ActiveSheet.PageSetup
.PrintArea = PrintArea
.LeftMargin = 0: .RightMargin = 0
.TopMargin = 0: .BottomMargin = 0
.HeaderMargin = 0: .FooterMargin = 0
End With
Application.ScreenUpdating = True
ActiveSheet.PrintPreview
End If
End Sub