Excel VBA saut de Page

Bonjour à toutes et à tous, J'ai besoin de vous, les experts d'Excel :), pour effectuer une mise en page. Mon problème est le suivant : J'ai un fichier qui a 500 lignes de la colonne A à R et les personnes qui saisissent le fichier peuvent remplir de 1 à 500 lignes... Donc j'aimerai intégrer des sauts de page en fonction de la saisi des autres, le seul repère que j'ai trouvé est que entre deux blocs de saisi, il y a un espace. donc comment puis-je faire pour qu'il n'ait pas de bloc qui commence à la fin d'une page et fini au début de l'autre page ? Malheureusement je ne peux pas vous donner le fichier... Je vous remercie d'avance :) !

Bonjour,

A tester :

Sub TestGenererDesSautDePage()

    GenererDesSautDePage ActiveSheet

End Sub
Sub GenererDesSautDePage(ByVal Sh As Worksheet)

Dim I As Long, DerniereLigne As Long

    With Sh
         DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
         For I = .HPageBreaks.Count To 1 Step -1
             .HPageBreaks(I).Delete
         Next I
         For I = DerniereLigne To 2 Step -1  ' A ajuster en fonction de la ligne de titre
             If WorksheetFunction.CountA(.Cells(I, 1).EntireRow) = 0 Then
                .HPageBreaks.Add Before:=.Cells(I + 1, 1)
             End If
         Next I
    End With

End Sub
Bonjour, Merci d'avoir répondu aussi vite ! Malheureusement, ça ne marche pas... Voici un exemple ci-joint du fichier. A noter que les lignes A1:A3 seront des titres répétés sur chaque feuille. du coup il faut une ligne de code qui définit la zone d'impression aux cellules utilisées. La Colonne D sera toujours remplie contrairement aux autres D'avance merci encore

Où est votre fichier ?

Je n'arrive pas à joindre le fichier comment fait-on svp ? (je suis nouveau)
capture
21exemple.xlsx (73.25 Ko)

Le formatage de votre impression n'est pas correct. Regardez la mise en page dans le fichier joint.

En ce qui concerne les sauts de page, j'ai ajouté le mot "Saut" en début de chaque bloc en colonne A.

Le code est le suivant :

Les macros sont lancés à partir des deux boutons dans la barre d'accès rapide. Curieusement je n'ai pu modifier les icônes comme je le fais d'habitude.

Option Explicit

Sub TestGenererDesSautsDePage()

    GenererDesSautDePage ActiveSheet
    MsgBox "Fin de création des sauts de page !", vbInformation

End Sub

Sub GenererDesSautDePage(ByVal Sh As Worksheet)

Dim I As Long, DerniereLigne As Long

    With Sh
         DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
         If .HPageBreaks.Count > 0 Then
            For I = .HPageBreaks.Count To 1 Step -1
                .HPageBreaks(I).Delete
            Next I
         End If
         For I = DerniereLigne To 4 Step -1
             If .Cells(I, 1) = "Saut" Then
                .HPageBreaks.Add Before:=.Cells(I, 1)
             End If
         Next I
    End With

End Sub

Sub TestSupprimerLesSautsDePage()

    SupprimerLesSautsDePage ActiveSheet
    MsgBox "Fin de suppression des sauts de page !", vbInformation

End Sub

Sub SupprimerLesSautsDePage(ByVal Sh As Worksheet)

Dim I As Long

    With Sh
         For I = .HPageBreaks.Count To 1 Step -1
             .HPageBreaks(I).Delete
         Next I
    End With

End Sub

re bonjour,

j'ai essayé en mettant le code sur mon fichier, mais j'ai des erreurs...
Pouvez-vous me renvoyer le fichier mais en xls svp ?

Bonjour,

Vous pourriez également le faire en sauvegardant sous Excel 97 - 2003.

Vos paramètres de mise en page n'étaient pas correctement réglés, regardez dans les fichiers que je vous ai envoyés.

Bonjour, J'ai encore une erreur " l'indice n'appartient pas à la sélection"

Essayez de passer en mode Affichage avec saut de page.

Essayez également de neutraliser d'abord la suppression des sauts de page dans la procédure "GenererLes.."

J'ai essayé avec "ActiveSheet.DisplayPageBreaks = True" ça ne fonctionne pas non plus..

Cela me l'a fait également, c'est comme si VBa ne reconnaissait pas la collection existante. Il faut neutraliser la destruction, générer les sauts de pages et remettre le code comme avant.

Qu'entendez-vous par neutraliser la destruction, générer les sauts de pages et remettre avant ? Je suis un peu novice en VBA, d'avance merci !

Ce sont les apostrophes qu'on met devant les lignes de code. Celles-ci passent en vert et deviennent des commentaires :

Sub GenererDesSautDePage(ByVal Sh As Worksheet)

Dim I As Long, DerniereLigne As Long

    With Sh
         DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
       '  If .HPageBreaks.Count > 0 Then
       '     For I = .HPageBreaks.Count To 1 Step -1
       '         .HPageBreaks(I).Delete
       '     Next I
       '  End If
         For I = DerniereLigne To 4 Step -1
             If .Cells(I, 1) = "Saut" Then
                .HPageBreaks.Add Before:=.Cells(I, 1)
             End If
         Next I
    End With

End Sub
Merci de votre réponse, juste pour être certain, pouvez-vous me remettre le code au complet avec les apostrophes ? car je ne suis pas sûr de les mettre au bon endroit. D'avance merci

??? C'est dans mon dernier message.

Bonjour, Pardon, je pensais que le code était plus long. Merci. J'ai réssayé le code, ça ne fonctionne toujours pas.. J'ai une erreur "objet requis" pour la ligne : Derniereligne = .Cells(Rows.Count, 1).End(xlUp).Row. Est-ce que je m'y prend mal ?? c'est étonnant.

Est-ce que cela fonctionne dans les fichiers que je vous ai envoyés ?

Rechercher des sujets similaires à "vba saut page"