Sub Impression()
' Exemple d'ajout d'un saut de page : ActiveSheet.HPageBreaks.Add Before:=Range("A3")
Dim TS As Object
Dim MesDates As Range, NewCel As Range, OldCel As Range
' Si la feuille active au moment d'imprimer ne s'appelle pas "Feuille pour factu", alors on abandonne la macro
If ActiveSheet.Name <> "Feuille pour factu" Then Exit Sub
' Assignation de TS : tableau complet (sans les en-têtes)
Set TS = ActiveSheet.ListObjects(1)
' Assignation de MesDates : toutes les cellules visibles de la deuxième colonne du tableau
Set MesDates = TS.ListColumns(2).DataBodyRange.SpecialCells(xlCellTypeVisible)
' Supprime tous les sauts de page de la feuille active
ActiveSheet.ResetAllPageBreaks
' Assignation de Debut à True
Debut = True
' Pour chaque cellule visible de la deuxième colonne du tableau
For Each NewCel In MesDates
' Si Debut = True alors...
If Debut Then
' Assignation de OldCel
Set OldCel = NewCel
' Assignation de Debut à False, pour ne pas repasser dans cette partie du For...Next
Debut = False
Else
' Si la valeur de la cellule visible n'est pas identique à celle de la cellule visible au-dessus...
If NewCel <> OldCel Then
' on ajoute un saut de page
ActiveSheet.HPageBreaks.Add Before:=NewCel
' Fin de Si
End If
' Assignation de OldCel
Set OldCel = NewCel
' Fin de Si
End If
' Passage à la cellule suivante
Next
' Configuration pour imprimer l'en-tête sur chaque page
Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintTitleRows = TS.HeaderRowRange.Address
.PrintTitleColumns = ""
End With
Application.PrintCommunication = True
ActiveSheet.PrintPreview
End Sub