XL 2010 Saut de page par rapport à 2 plages

cathodique

XLDnaute Accro
Bonjour:),

En ce pluvieux dimanche matin, j'ai besoin de vos compétences. Je sèche depuis hier soir. J'ai trouvé des exemples mais je ne suis pas parvenu à adapter à mes besoins.
Je dois ajuster des sauts de page par rapport à 2 plages (droite et gauche)
Saut de page.JPG

Le saut de page doit être déplacé juste au dessus d'une ligne colorée. Or, comme vous pouvez le voir la position idéale est la ligne orange.
Autrement dit, il ne faut pas que les plages de données soient tronquées à droite ou à gauche.
Par plage, j'insinue d'une ligne colorée à la suivante, il y a toujours un saut de ligne entre les plages.

En vous remerciant par avance.

Bon dimanche.
 

Pièces jointes

  • compte rendu financier.xlsm
    24.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonjour cathodique,

Je suppose que vous voulez mettre du VBA là-dedans.

Mais bien sûr c'est compliqué alors que c'est assez simple de le faire manuellement.

Sauf si l'on est mal-voyant ou s'il y a beaucoup de sauts de page à créer.

A+
 

cathodique

XLDnaute Accro
Bonjour cathodique,

Je suppose que vous voulez mettre du VBA là-dedans.

Mais bien sûr c'est compliqué alors que c'est assez simple de le faire manuellement.

Sauf si l'on est mal-voyant ou s'il y a beaucoup de sauts de page à créer.

A+
Bonjour Job75;),

En effet, c'est du VBA qu'il faudrait mettre. Le modèle est obtenu par VBA, extraction d'une BD, calcul et mise en forme. Présentement, je n'ai pas beaucoup de données dans le fichier joint j'ai ajouté manuellement en faisant des copier/coller pour illustrer un peu la chose. D'ici la fin de l'exercice, je ne sais pas quel sera le nombre de lignes. Et par conséquent, le nombre de sauts de page.
Le fichier est géré totalement par userform aucune action au niveau des feuilles n'est permise. Le but est qu'au final l'édition d'un rapport en pdf.

Je sais bien que ce n'est pas simple. C'est la raison pour laquelle je sèche totalement. D'où l'ouverture de cette discussion.

En tout cas merci de m'avoir répondu.
 
Dernière édition:

cathodique

XLDnaute Accro
Re,

Je suis parvenu à mettre un saut de page à la fin, car le petit encadré doit être seul sur la dernière page.
VB:
Sub MePageCompteRenduFinancier()
    Dim dl As Long, col As Byte, HPage As Integer, VPage As Byte, x As Integer
    ActiveWindow.View = xlPageBreakPreview

    With ActiveSheet
'        dl = .UsedRange.Rows.Count
         dl = .UsedRange.Cells(.UsedRange.Cells.Count).Row    'Là on est sur!!!! PatrickToulon
        .ResetAllPageBreaks
        .PageSetup.PrintArea = "A1:k" & dl
        .PageSetup.PrintTitleRows = "$1:$4"
        HPage = .HPageBreaks.Count
        VPage = .VPageBreaks.Count

        If VPage >= 1 Then .VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1

        If HPage >= 1 Then
            For x = dl To 1 Step -1
                If .Cells(x, 9).Borders(xlEdgeTop).LineStyle = xlContinuous Then
                    .HPageBreaks.Add Before:=Range("A" & x - 1)
                    Exit For
                End If
            Next x
        End If

    End With
    ActiveWindow.View = xlNormalView

'    Call PDF_Compte_Rendu_Financier_PDF
End Sub
Comment pourrait-on récupérer le numéro de ligne d'un HPageBreaks?

Merci.
 

cathodique

XLDnaute Accro
Finalement ce n'est pas trop compliqué :
VB:
Sub Sauts_de_page()
Dim F As Worksheet, col1%, col2%, n%, lig&, test As Boolean, col%
Set F = Feuil1 'CodeName à adapter
col1 = F.UsedRange.Column
col2 = col1 + F.UsedRange.Columns.Count - 1
F.PageSetup.PrintArea = ""
F.PageSetup.Zoom = False
F.PageSetup.FitToPagesWide = 1
For n = F.HPageBreaks.Count To 2 Step -1
    For lig = F.HPageBreaks(n).Location.Row To F.HPageBreaks(n - 1).Location.Row + 1 Step -1
        test = True
        For col = col1 To col2
            If Cells(lig, col) <> "" Then If Cells(lig, col).Interior.ColorIndex = xlNone Then test = False: Exit For
        Next col
        If test Then F.HPageBreaks(n).Delete: F.HPageBreaks.Add Rows(lig): Exit For
Next lig, n
End Sub
Ce serait sympa de fournir un fichier pour qu'on puisse tester :)
Merci Job75, je te réponds rapidement car j'ai une course avant le couvre-feu.
J'ai bien mis un fichier au post#1.

Merci beaucoup A+
 

job75

XLDnaute Barbatruc
Je suis arrivé à faire quelque chose qui fonctionne :
VB:
Sub Sauts_de_page()
Dim F As Worksheet, col1%, col2%, n&, deb&, lig&, test As Boolean, col%
Set F = Feuil1 'CodeName à adapter
col1 = F.UsedRange.Column
col2 = col1 + F.UsedRange.Columns.Count - 1
F.PageSetup.PrintArea = ""
F.PageSetup.Zoom = False
F.PageSetup.FitToPagesWide = 1
F.ResetAllPageBreaks 'RAZ
n = 1
1 For n = n To F.HPageBreaks.Count
    If n = 1 Then deb = 2 Else deb = F.HPageBreaks(n - 1).Location.Row + 1
    For lig = F.HPageBreaks(n).Location.Row To deb Step -1
        test = True
        For col = col1 To col2
            If F.Cells(lig, col) <> "" Then If F.Cells(lig, col).Interior.ColorIndex = xlNone Then test = False: Exit For
        Next col
        If test Then F.HPageBreaks.Add F.Rows(lig): n = n + 1: GoTo 1 'récursivité
Next lig, n
End Sub
Merci de joindre le fichier avec la macro.
 

cathodique

XLDnaute Accro
Je suis arrivé à faire quelque chose qui fonctionne :
VB:
Sub Sauts_de_page()
Dim F As Worksheet, col1%, col2%, n&, deb&, lig&, test As Boolean, col%
Set F = Feuil1 'CodeName à adapter
col1 = F.UsedRange.Column
col2 = col1 + F.UsedRange.Columns.Count - 1
F.PageSetup.PrintArea = ""
F.PageSetup.Zoom = False
F.PageSetup.FitToPagesWide = 1
F.ResetAllPageBreaks 'RAZ
n = 1
1 For n = n To F.HPageBreaks.Count
    If n = 1 Then deb = 2 Else deb = F.HPageBreaks(n - 1).Location.Row + 1
    For lig = F.HPageBreaks(n).Location.Row To deb Step -1
        test = True
        For col = col1 To col2
            If F.Cells(lig, col) <> "" Then If F.Cells(lig, col).Interior.ColorIndex = xlNone Then test = False: Exit For
        Next col
        If test Then F.HPageBreaks.Add F.Rows(lig): n = n + 1: GoTo 1 'récursivité
Next lig, n
End Sub
Merci de joindre le fichier avec la macro.
Merci Job75 pour ton aide. Quel fichier? J'ai joint un fichier au post#1. Quelle macro?
Si c'est le véritable fichier de travail. Désolé, c'est un gros fichier comportant des données que je ne peux pas communiquer.
Merci beaucoup, je reviendrai aux nouvelles après test de ton code.

Bonne soirée.
 

job75

XLDnaute Barbatruc
Ah oui je n'avais pas vu le fichier, le voici avec la macro lancée par un bouton.

Pour qu'il y ait un saut de page il faut que pour la mise en page la hauteur soit en Automatique.
 

Pièces jointes

  • compte rendu financier(1).xlsm
    28.5 KB · Affichages: 3

cathodique

XLDnaute Accro
Ah oui je n'avais pas vu le fichier, le voici avec la macro lancée par un bouton.

Pour qu'il y ait un saut de page il faut que pour la mise en page la hauteur soit en Automatique.
Depuis le temps, je savais bien que tu étais un champion. Je suis vraiment en admiration:cool::cool::cool:.
Toute ma gratitude. Une dernière question qu'entends-tu par "la hauteur soit en automatique".
Désolé, des fois mes piles sont presque à plat et je ne répercute plus surtout en fin de journée.

Encore merci. Bonne soirée.

édit: Désolé j’ai oublié de spécifier que les lignes 1:4 se répètent sur toutes les pages.
 
Haut Bas