Insérer des lignes jusqu'au saut de page

Bonjour,

Je souhaiterais optimiser le code du fichier ci-joint.

Il a pour but de créer des lignes avant chaque sous-total jusqu’à ce que ces derniers se retrouvent en bas de page, juste avant le saut, question d’esthétique

Le programme teste donc chaque ligne de la colonne A jusqu'à tomber sur le premier total, puis insère des lignes. Il arrête lorsque le test (x = ActiveCell.EntireRow.PageBreak = xlAutomatic) trouve un saut de page, puis va chercher le total suivant pour effectuer la même action.

Ça tourne à peu près bien comme je veux, mais c'est long et me plante parfois Excel lorsque je traite un grand nombre de lignes.

Auriez-vous donc des idées, tuto, et des pistes de réflexion afin d’alléger un peu le code, les boucles, etc... ?

Merci d'avance pour votre aide

Bonne journée à tous

Victor

22fichier-source.xlsm (33.26 Ko)

Bonjour,

Est-ce-que tu utilises l'instruction :

HPageBreaks

pour faire le décompte ...?

Bonjour et merci pour cette réponse,

Non je n'utilise pas cette instruction et je ne pense pas avoir fait de décompte non plus. Je devrais compter le nombre de saut de page tu penses ? Ou peut-être le nombre de lignes entre mon "total" et le saut de page suivant ?

Dans le doute voici le code actuel, ça illustrera un peu mieux la chose :

Dim test As Boolean
Dim x As Integer

For j = 0 To 200
    Cells(1 + j, 1).Select
    If ActiveCell = "Total" Then
        For i = 0 To 100
            Rows(j + i + 3).Select
            x = ActiveCell.EntireRow.PageBreak = xlAutomatic
            If x = False Then
                Rows(j + i).Select
                Selection.EntireRow.Insert
            End If
            If x = True Then
                i = 100
            End If
        Next i
    End If
Next j

Bonne journée

Bonjour,

Tu peux tester le code suivant :

Sub InsererAvantSautPage()
'Insérer 2 Lignes avant chaque saut de page
Dim n As Long
Dim i As Long
    For i = 1 To ActiveSheet.HPageBreaks.Count
        Rows(Range(sh.HPageBreaks(i).Location).Row + n & ":" & Range(sh.HPageBreaks(i).Location).Row + n + 1).Insert Shift:=xlDown
        n = n + 2
    Next i
End Sub

J'espère que cela pourra t'aider ...

Rechercher des sujets similaires à "inserer lignes saut page"