saut de page automatique toujours au même endroit

Valter

XLDnaute Occasionnel
Bonjour,
J'aimerais insérer automatiquement 1 saut de page après la ligne 20 un autre après la ligne 30 et ainsi de suite, je ne voudrais que cela soit une macro mais que d'une manière automatique le saut de page tombe toujours après ces mêmes lignes.
Dans mon fichier il m'arrive souvent d'insérer ou de supprimer des lignes et cela me change l'endroit des sauts des de page que j'avais insérés.
Malgré de nombreux exemples que j'ai trouvé dans ce forum, je ne suis pas arrivé à le faire fonctionner correctement.
Merci d'avance pour votre aide.
 

STephane

XLDnaute Occasionnel
Re : saut de page automatique toujours au même endroit

Je ne suis pas un spécialiste des sauts de page, et je ne sais pas s'ils sont "fixables".


La première macro ajoute un saut de page toutes les 10 lignes à partir de la ligne 20 (en effaçant préalablement tous les sauts de page avant de les recréer).
La deuxième macro ajoute un saut de page à chaque changement de valeur à partir de la ligne 20 (idem que première).

La 3° et 4° devrait permettre de supprimer les sauts de pages horizontaux et verticaux au cas où la méthode ResetAllPageBreaks ne s'applique dans la version d'Excel que tu utilises.



Code:
Sub AddBreaks_FromStartRow_Step10()

StartRow = 20
FinalRow = Range("A65536").End(xlUp).Row
LastVal = Cells(StartRow, 1).Value

ActiveSheet.ResetAllPageBreaks
ActiveSheet.PageSetup.PrintArea = ""

For i = StartRow To FinalRow Step 10
        ActiveSheet.HPageBreaks.Add _
            Before:=Cells(i, 1)
Next i
End Sub
Sub AddBreaks_FromStartRow_AfterAnyChanges()

StartRow = 20
FinalRow = Range("A65536").End(xlUp).Row
LastVal = Cells(StartRow, 1).Value

ActiveSheet.ResetAllPageBreaks
ActiveSheet.PageSetup.PrintArea = ""

' snippet trouvé quelque part sur le web
For i = StartRow To FinalRow
    ThisVal = Cells(i, 1).Value
    If Not ThisVal = LastVal Then
        ActiveSheet.HPageBreaks.Add _
            Before:=Cells(i, 1)
    End If
    LastVal = ThisVal
Next i
End Sub

Sub RemoveHBreaks()
On Error Resume Next
For j = ActiveSheet.HPageBreaks.Count To 1 Step -1
    ActiveSheet.HPageBreaks(j).Delete
Next j
On Error GoTo 0
End Sub

Sub RemoveVBreaks()
On Error Resume Next
For j = ActiveSheet.VPageBreaks.Count To 1 Step -1
    ActiveSheet.VPageBreaks(j).Delete
Next j
On Error GoTo 0
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo