Saut de page

NVerder

XLDnaute Nouveau
Bonjour,

Je possède un fichier issu d'une base de donnée qui se compose comme suit

1ère ligne : une ligne d'en-tête
2ème ligne: nom du client 1
3ème ligne: le numéro du client 1
4ème ligne: la ville du client 1
5 ème ligne: nom du client 2
6éme ligne: le numéro du client 2
...

Ce fichier est mis en forme à l'aide d'une macro.
il comporte plus de 200 clients.

Je souhaite que les sauts de page se fasse toujours avant la ligne "nom d'un client"
(et jamais entre le nom du client et son numéro
ou entre le numéro et la ville du client)
et puisque je suis débutant, je n'y arrive pas.

Merci pour votre aide.

Nicolas
 

NVerder

XLDnaute Nouveau
Re : Saut de page

Merci à Néné06 et à Boisgontier pour vos réponses,

Ci-joint mon fichier et 2 macros ci-dessous :
- Celle de Boisgontier
- et une autre inspirée par la première.

Malheureusement, elles ne fonctionnent pas, j'ai pourtant l'impression de ne pas être loin de la solution.

Autre piste que je souhaite creuser.
Est-il possible de spécifier un "hpageMax" en centimètres plutôt qu'en nombre de ligne.
Puisque mes lignes adaptent leur largeur automatiquement à leur contenu, je crains que les sauts de page deviennent inopérationnels pour les "gros clients".

Nicolas

Code:
Sub SautPageversion_boisgontier_modifiée()
    
  ActiveSheet.ResetAllPageBreaks  ' raz
  hpageMax = 66    ' hauteur de page maxi
  hfiche = 5
  hpage = (hpageMax \ hfiche) * hfiche 'le signe "\" permet-il d'obtenir un nombre entier suite à la division ?
  
  For ligne = hpage + 1 To [A65000].End(xlUp).Row Step hpage
  Cells(ligne, 1).Select 'facultatif : permet de voir ou en est le programme en débogage pas à pas
  If Cells(ligne, 1).Value = "Nom" Then
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(ligne, 1)
    Else
        nouvelle_ligne = ligne - 1
        Cells(nouvelle_ligne, 1).Select 'facultatif : permet de voir ou en est le programme en débogage pas à pas
        If Cells(nouvelle_ligne, 1).Value = "Nom" Then
        ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(nouvelle_ligne, 1)
        
        Else
            nouvelle_ligne = ligne - 2
            Cells(nouvelle_ligne, 1).Select 'facultatif : permet de voir ou en est le programme en débogage pas à pas
            If Cells(nouvelle_ligne, 1).Value = "Nom" Then
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(nouvelle_ligne, 1)
            Else
                nouvelle_ligne = ligne - 3
                Cells(nouvelle_ligne, 1).Select 'facultatif : permet de voir ou en est le programme en débogage pas à pas
                If Cells(nouvelle_ligne, 1).Value = "Nom" Then
                ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(nouvelle_ligne, 1)
                Else
                    nouvelle_ligne = ligne - 4
                    Cells(nouvelle_ligne, 1).Select 'facultatif : permet de voir ou en est le programme en débogage pas à pas
                    If Cells(nouvelle_ligne, 1).Value = "Nom" Then
                    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(nouvelle_ligne, 1)
                    End If
                End If
            End If
         End If
    End If
  Next ligne
  
End Sub

Code:
Sub SautPageversion_originale_boisgontier()
  ActiveSheet.ResetAllPageBreaks  ' raz
  hpageMax = 66    ' hauteur de page maxi
  hfiche = 5
  hpage = (hpageMax \ hfiche) * hfiche
  For ligne = hpage + 1 To [A65000].End(xlUp).Row Step hpage
    Cells(ligne, 1).Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Cells(ligne, 1)
  Next ligne
End Sub
 

Pièces jointes

  • Sautdepage_excel.xls
    32 KB · Affichages: 68

Discussions similaires

Réponses
3
Affichages
299

Statistiques des forums

Discussions
312 226
Messages
2 086 414
Membres
103 204
dernier inscrit
alaa20dine01