VBA saut de page

Bonsoir à tous,

J'ai un tableau modèle de 32 lignes

- une fois rempli, je copie et empile ce modèle dans une autre feuille en dessous du

précédent. (environ une douzaine de tableaux)

- Je voudrais après avoir déterminer la zone d'impression, faire un saut de page toute

les 32 lignes.

quel serait le bon code ?

amicalement

Claude.

édit: et comment supprimer tous les sauts de page ?

Salut le forum

Claude essaye ceci

ActiveSheet.DisplayAutomaticPageBreaks = False 'Suppresion des sauts de page

For i = 32 To 100 Step 32 'Saut de page après 32 lignes
ActiveWindow.SelectedSheets.HPageBreaks.Add before:=Rows(i + 1)
Next i

Mytå

Bonsoir Claude,

Un bout de code sur lequel t'appuyer :

Sub Sautdepage()
Dim n As Long
n = Range("A1").End(xlDown).Row

ActiveSheet.ResetAllPageBreaks
ActiveSheet.PageSetup.PrintArea = "A1:G" & n
For i = 1 To n / 32
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(i * 32 + 1, 1)
Next i

End Sub

re,

Mytå et Sylvain TBM,

Je n'arrive pas à régler, les sauts de page ne se font pas correctement !

peut-être une question de marges ?

je joint le fichier

il faut purger la feuille "archive" et lancer la macro sur la 1ère feuille.

merci à vous deux

https://www.excel-pratique.com/~files/doc/RAPPORT2.zip

amicalement

Claude.

Re le forum

Claude en supprimant la première ligne cela semble fonctionner.

Sub Sautdepage()
Dim N As Long
Dim I As Integer

With ActiveSheet
    .ResetAllPageBreaks
    .Rows(1).Delete
N = .Range("A65536").End(xlUp).Row
    .PageSetup.PrintArea = "A1:K" & N
End With

For I = 1 To N / 31
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(I * 31 + 1, 1)
Next I

End Sub

Sans suppresion de la ligne 1

Sub Sautdepage()
Dim N As Long
Dim I As Integer

With ActiveSheet
N = .Range("A65536").End(xlUp).Row
    .ResetAllPageBreaks
    .PageSetup.PrintArea = "A2:K" & N
End With

For I = 1 To N / 31
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(I * 31 + 2, 1)
Next I

End Sub

Mytå

re,

Mytå, non, çà ne va toujours pas !

mais je pense que peut-être, il faut que la zone d'impression soit un multiple de 31 ??

non ?

Claude

édit: çà va bien pour les 3 premiers, mais après, çà déc..

Re le forum

Si je regarde aperçu avant impression, pour moi ici tout fonctionne bien

avec le code 1 ou le code 2.

Mytå

re,

c'est bon, il me manquait seulement la 1ère ligne

    Sheets("Archive").Select

si bien que la mise en page se faisait sur la feuille1

Sub Sautdepage()
    Sheets("Archive").Select
Dim N As Long
Dim I As Integer
N = Range("A65536").End(xlUp).Row
            ActiveSheet.ResetAllPageBreaks
            Rows(1).Delete
            ActiveSheet.PageSetup.PrintArea = "A1:K" & N
    For I = 1 To N / 31
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(I * 31 + 1, 1)
    Next I
End Sub

Merci à vous deux

Mytå, j'ai eu peur que tu nous quitte complètement !

amicalement

Claude.

édit:lundi 8h : merci Mytå pour ton dernier code.

Re le forum

Claude, juste pour le fun en complément sans la suppression de la ligne 1

Deux facons de faire, la ligne en commentaire est aussi bonne

Sub Sautdepage()
Dim N As Long
Dim I As Integer

With Sheets("Archive")
    .Activate
        N = .Range("A65536").End(xlUp).Row
    .ResetAllPageBreaks
    .PageSetup.PrintArea = "A2:K" & N
        For I = 1 To N / 31
           '.HPageBreaks.Add Before:=Cells(I * 31 + 2, 1)
            .HPageBreaks.Add Before:=Rows(I * 31 + 2)
        Next I
End With

End Sub

Mytå

Rechercher des sujets similaires à "vba saut page"