Pagination et saut de page au changement de valeur d'une colonne

Bonjour,

Je souhaite pouvoir créer un saut de page à chaque changement de valeur dans la colonne "C" du fichier joint.

De plus, je souhaiterais si c'est possible pouvoir numéroter les pages 1 sur X page en reprenant la numérotation à 1 à chaque nouveau saut de page.

cette numérotation peut se faire dans une cellule ou en pieds de page, l'important c'est qu'elle soit visible à l'impression.

Le nombre de lignes de mon fichier varie. il peut comporter 50 lignes comme 1000.

Exemple dans le fichier :

Le premier saut de page se fera après le changement de la valeur de la colonne C "70399" la numérotation sera 1 /x pages.

Le deuxième saut de page devra se faire après le changement de la valeur de la colonne C "70411", la numérotion sera 1 / X pages

est-ce possible ?

Je vous remercie par avance pour votre aide à ce sujet.

Cordialement,

Christian.

Bonsoir,

Essayez ceci, lancez la macro, après chaque attribution des sauts de page, on voit l'aperçu de ce qui sera imprimé, fermez l'aperçu et la prochaine feuille à imprimer s'affiche et ainsi de suite jusqu'à la fin. Si tout fonctionne correctement, remplacez la ligne de l'aperçu par la ligne qui commandera l'impression directement.

Sub Sauts_de_page()
    Dim LigDeb As Long, DerLig As Long, i As Long
    Application.ScreenUpdating = False
    LigDeb = 1
    DerLig = Range("A" & Rows.Count).End(xlUp).Row
    For i = 3 To DerLig + 1
        If Cells(i, "C") <> Cells(i - 1, "C") Then
            ActiveSheet.PageSetup.PrintArea = "A" & LigDeb & ":P" & i - 1
            ActiveWindow.SelectedSheets.PrintPreview 'aperçu avant impression, fermé l'aperçu pour voir la prochoine feuille
            ActiveSheet.HPageBreaks.Add Before:=Cells(i, "C")
            LigDeb = i
        End If
    Next i
End Sub

Cdlt

bonjour,

à peut près la même manière que Arturo83, mais en une fois et un maximum de lignes par page

Const PageLines = 10     'combien de lignes par page

Sub Pages()
     Dim aOut
     Set sh = Sheets("a")
     Set c = sh.Range("A1").CurrentRegion
     sh.ResetAllPageBreaks

     c.Offset(1).Columns(3).Name = "drenek"
     aa = [drenek]
     ReDim aOut(1 To c.Rows.Count, 1 To 2)
     nr = Filter([transpose(if(drenek<>offset(drenek,-1,,,),row(drenek),"~"))], "~", 0)
     For i = 0 To UBound(nr) - 1
          Delta = nr(i + 1) - nr(i)
          pag = (Delta - 1) \ PageLines
          For j = 0 To pag
               sh.HPageBreaks.Add Before:=c.Cells(nr(i) + j * PageLines, 1)
               aOut(nr(i) + j * PageLines, 1) = "page " & j + 1 & " de " & pag + 1
               aOut(nr(i) + j * PageLines, 2) = aa(nr(i), 1)
          Next
     Next
     c.Offset(, c.Columns.Count + 1).Resize(, 2).Value = aOut

     With sh.PageSetup
     MsgBox c.Resize(, c.Columns.Count + 2).Address
          .PrintArea = c.Resize(, c.Columns.Count + 3).Address
          .Zoom = False
          .FitToPagesWide = 1
          .FitToPagesTall = False
          .Orientation = xlLandscape
     End With
     sh.PrintPreview
End Sub

Bonjour Arturo83 et BsAlv

Merci pour votre aide.

@BsAlv, le document imprimé est Ok sauf le nombre de ligne. Est-il possible d'augmenter le nombre de ligne par page ?

J'ai essayé en modifiant la ligne :

Const PageLines = 10 'combien de lignes par page

en remplaçant 10 par 30 mais cela ne fonctionne pas.

Pouvez-vous me redire si c'est possible ?

Merci.

Christian.

bonjour, il faut relancer la macro après ce modif, vous l'avez fait ? Parce que cela fonctionne ici chez moi. Alors on voit que la 2ième page est 30 lignes plus bas, etc.

BsAlv,

Oui cela fonctionne en effet. je n'avais pas du relancer du coup !

Désolé pour le dérangement et contrôle inutile.

Merci pour cette macro et votre réactivité, cela va bien nous aider.

Cordialement,

Christian.

Rechercher des sujets similaires à "pagination saut page changement valeur colonne"