XL pour MAC dernière ligne tableau avant changement de page

Nono1835

XLDnaute Occasionnel
bonjour a tous
voici mon problème
j' ai créer un document devis, celui ci se présente sous forme de tableau.
pour complèter mon devis j'insère des lignes, mais au bout d'un moment cela me fait passer sur la page suivante.
le problème est que sur ma page 1 mon tableau est pas fermé en bas puisqu'il continue sur la page 2.
Comment faire pour fermer automatiquement un tableau sur la première page quand celui ci continue sur la 2ème
merci d'avance
 

Pièces jointes

  • essais 3.xlsx
    40.2 KB · Affichages: 17

AtTheOne

XLDnaute Impliqué
Supporter XLD
Bonsoir à tous, bonsoir @Nono1835
Je ne sais pas si ton post du 31/01/22 est toujours d'actualité mais pour le principe j'y réponds.

D'abord dans le menu mise en page sur l'onglet Feuille choisis de répéter les lignes $20:$22 (N° de devis, date et titres du tableau) :
1645896928488.png


Ensuite tu as le choix :
  • soit manuellement lorsque ton tableau excède une page, tu mets la bordure inférieure à la dernière ligne de la page, mais je suppose que ce n'est pas cela que tu recherches !
  • soit tu utilises une macro qui va rechercher les sauts de page dans une plage de contrôle qui contient ton tableau et qui lorsqu'elle en détecte un, se charge de mettre la bordure. C'est ce que fait la macro suivante
    Enrichi (BBcode):
    Sub Préparer_Impression()
         Dim c As Range, Décaler As Boolean
    If F03_Devis.PageSetup.Pages.Count > 1 Then
    With F03_Devis.[Plage_CTRL]
                   .Borders(xlEdgeLeft).LineStyle = xlContinuous
                   .Borders(xlEdgeRight).LineStyle = xlContinuous
                   .Borders(xlEdgeTop).LineStyle = xlContinuous
                   .Borders(xlEdgeBottom).LineStyle = xlContinuous
                   .Borders(xlInsideHorizontal).LineStyle = xlNone
                   .Rows(1).Borders(xlEdgeBottom).LineStyle = xlContinuous
                   For Each c In .Columns(1).Cells
                        If c.EntireRow.PageBreak <> xlPageBreakNone Then
    F03_Devis.Cells(c.Row - 1, 1).Resize(1, 9).Borders(xlEdgeBottom).LineStyle = xlContinuous
    F03_Devis.Cells(c.Row, 1).Resize(1, 9).Borders(xlEdgeTop).LineStyle = xlContinuous
                        End If
                   Next
              End With
    With F03_Devis.[Récap]
                   Décaler = False
                   i = 0
                   For Each c In .Columns(1).Cells
                        i = i + 1
                        If c.EntireRow.PageBreak <> xlPageBreakNone Then Décaler = True: Exit For
                   Next
                   If Décaler Then .Rows(1).EntireRow.Resize(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
              End With
         End If
        
    End Sub
J'ai créé deux noms définis "Plage_CTRL" qui recouvre le tableau de devis et "Récap" qui recouvre les lignes de totalisation sous le tableau (il ne faut pas qu'elles soient coupées par un saut de page nom plus)
Et dans le projet VBA j'ai affecté le code name "F03_Devis" à ta feuille "Devis"

J'ai ajouté un bouton "Préparer l'impression" en bas de page pour lancer la macro (ce bouton n'est pas imprimé).
Voir le fichier joint

Amicalement
Alain
 

Pièces jointes

  • essais Devis.xlsm
    58.6 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 948
Membres
101 850
dernier inscrit
Danigra