Problème à l'impression

Bonjour,

Tel qu'est présenté le fichier ci-joint, les 2 membres du groupe 1450 - aux lignes 30 et 31 - sont imprimés sur deux feuilles différentes. Je souhaiterais donc que le premier de ces deux membres soit ''poussé'' vers le bas de manière à être imprimé sur la même feuille que son acolyte.

Ce faisant, le deuxième membre du groupe 2450 - actuellement aux lignes 55 et 56 - seront à leur tour séparés. Il faudrait alors recommencer l'opération pour eux également. Et ainsi de suite.

Il ne peut y avoir que 1 ou 2 membres par groupe, jamais plus.

Avez-vous une idée de solution ?

Bonnes salutations.

11demo.xlsm (21.06 Ko)

Bonjour,

Un test sans être certains de couvrir tous les cas :

Sub SAUTS()
With ActiveSheet
    If .HPageBreaks.Count > 0 Then
        For Each SAUT In .HPageBreaks
            If .Cells(SAUT.Location.Row - 1, 4).Value = .Cells(SAUT.Location.Row, 4).Value Then
                .HPageBreaks.Add Before:=.Rows(SAUT.Location.Row + 1)
                .Rows(SAUT.Location.Row).PageBreak = xlPageBreakNone
            End If
        Next SAUT
    End If
End With
End Sub

Bonne soirée

Salut et merci pour ton aide.

Avec ta solution, j'ai la page 1 sur laquelle j'ai l'un des deux membre du groupe 1450, la page 2 avec uniquement le deuxième membre 1450, la page 3 sur laquelle tous les présents ont été tirés d'une ligne vers le haut, le membre 2452 est donc lui aussi monté sur cette page 3 et la page 4 avec le solde des présents.

Ce que j'aurais voulu : La page 1 sans les deux membres du groupe 1450, la page 2 avec les deux membres du groupe 1450 tout en haut puis d'autres membres. Comme l'un des deux membres du groupe 2450 aurait été poussé sur la page 3, je souhaiterais que l'autre membre du groupe 2450 soit également poussé sur la page 3.

Cordialement.

Autant pour moi je suis con les sauts de pages avaient été convertis en manuel suite à ma macro ...

Sub SAUTS()
With ActiveSheet
    For Each SAUT In .HPageBreaks
            If .Cells(SAUT.Location.Row - 1, 4).Value = .Cells(SAUT.Location.Row, 4).Value Then
            .HPageBreaks.Add Before:=.Rows(SAUT.Location.Row - 1)
            Application.ScreenUpdating = True
            End If
    Next SAUT
End With
End Sub

Désolé !

Wow, on part dans une très bonne direction. Merci pour cette avancée.

Je constate à l'instant que si je supprime des lignes, par exemple dans la première page, après avoir déjà lancé ton code une première fois, les membres 1450 ne sont plus retirés vers le haut. Serait-il possible de ''remettre les sauts-de-page à zéro'' avant de relancer ton code ?

Cordialement.

Bonjour à tous,

ma proposition:

Sub changeSauts()

Dim HpBrk As HPageBreak
Dim nLigne As Long

For Each HpBrk In ActiveSheet.HPageBreaks
    If Cells(HpBrk.Location.Row - 1, 4).Value = Cells(HpBrk.Location.Row, 4).Value Then
        nLigne = HpBrk.Location.Row - 1
        HpBrk.Delete
        ActiveSheet.HPageBreaks.Add Before:=Rows(nLigne)
    End If
Next

End Sub

Bonjour,

Pour reset les sauts de pages :

Sub SAUTS()
With ActiveSheet
.ResetAllPageBreaks
    For Each SAUT In .HPageBreaks
            If .Cells(SAUT.Location.Row - 1, 4).Value = .Cells(SAUT.Location.Row, 4).Value Then
            .HPageBreaks.Add Before:=.Rows(SAUT.Location.Row - 1)
            Application.ScreenUpdating = True
            End If
    Next SAUT
End With
End Sub

Bonne soirée

@ Ergotamine

Je te demande : ''remettre les sauts-de-page à zéro'', ? Tu me réponds : ".ResetAllPageBreaks". Du pur bonheur, tout fonctionne à merveille, tu as parfaitement résolu mon problème. Merci infiniment

@ Sequoyah

Merci pour ta proposition. Ta solution fonctionne également bien, cependant, le saut de page ne sont pas non plus remis à zéro.

Cordialement.

ouais

Rechercher des sujets similaires à "probleme impression"