Sub Imprimer()
Unprotect Password:=""
Set champ = Range("$A$1:$K$126")
champ.Find("*", , , , xlByRows, xlPrevious).Offset(1, 0).Select
n = champ.Columns.Count
champ.Cells(250, 1).End(xlUp).Offset(1, 0).Select
For i = 1 To champ.Rows.Count
k = 0
For Each c In champ.Cells(i, 1).Resize(1, n)
If c <> 0 And c <> "" Then k = k + 1
Next c
If k = 0 Then Union(Selection, champ.Cells(i, 1)).Select
Next i
Selection.EntireRow.Hidden = True
ActiveSheet.ResetAllPageBreaks ' raz
h = 41 ' hauteur de page
[A1].Select
Do While ActiveCell.Row < [A250].End(xlUp).Row 'On fait tant que la ligne de la cellule active est plus petite que chaque ligne, (de la derniere ligne à la premiere)
ActiveCell.Offset(h, 0).Select 'on selectionne la cellule décalée de h lignes et 0 colones par rapport à la cellule active.
tém = True ' tém est vrai
d = -1
Do While tém ' tant que tém est vérifié
If ActiveCell.Offset(d, 0) <> ActiveCell And Not ActiveCell.Offset(d, 0).Hidden Then 'si la cellule sur la ligne d'avant est différente de la cellule active
tém = False 'alors tém est faux on sort de la boucle
Else
d = d - 1 'sinon
End If
Loop 'on recommence
If (-d) < h Then ActiveCell.Offset(d + 1, 0).Select 'si -d est plus petit que h, alors on selectionne la cellule en dessous de la cellule active
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell ' on insere un saut de page
Loop
[A1].Select 'on recommence au premier If
ActiveSheet.PageSetup.PrintArea = champ.Address
'Application.ActivePrinter = "Canon MP250 series Printer sur Ne03:"
ActiveWindow.SelectedSheets.PrintPreview
'ActiveWindow.SelectedSheets.PrintOut
Cells.EntireRow.Hidden = False
Protect Password:=""
End Sub