Ne pas tronquer les tableaux lors de l'impression

ascal44

XLDnaute Occasionnel
Bonjour , je joint un fichier sur lequel je ne voudrais pas que soient tronqué les tableaux lors de l'impression.

Je vous remercie pour vos conseils
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : Ne pas tronquer les tableaux lors de l'impression

Bonjour

Une petite manipulation, si vous ne la connaissiez pas :

Faites "Affichage / Apercu des sauts de page
Vous obersver des lignes bleu continue (les bords des feuilles) et des discontinues (entre deux feuilles)
Si vous déplacer la ligne discontinu vers la bas (entre les tableau 3 et 4), les tableaux ne seront plus tronqués.

Est-ce que la manipulation vous semble suffisante?

Cordialement
 

ascal44

XLDnaute Occasionnel
Re : Ne pas tronquer les tableaux lors de l'impression

Oui je connais la manipulation avec les sauts de pages.

Le problème c'est que sur ce fichier plusieurs choix de masquage de lignes sont possibles. Cela décale les tableaux et peux les tronquer sur les pages.

Je voudrais automatiquement remplir au maximum les pages (économie de papier) en conservant les tableaux dans leur intégralité et placer les sauts de pages sous la fin du dernier tableau
 

ascal44

XLDnaute Occasionnel
Re : Ne pas tronquer les tableaux lors de l'impression

Non pas sur une seule feuille: le document peut comporter jusqu'à 10 feuilles voir plus.
En sort c'est une optimisation de mise en page d'impression automatique que je souhaites.
 

Odesta

XLDnaute Impliqué
Re : Ne pas tronquer les tableaux lors de l'impression

Bon, il y a des petites erreurs, car il ne gère pas super bien le nombre de ligne max (il faut ajouter les titres, gérer le dépassement, ect... mais c'est une bonne base à améliorer)

j'ai considéré que c'est la colonne A qui ne dois pas être vide.

Code:
Sub Macro1()
Dim tableau() As Variant
nombre_ligne_max_par_feuille = 25

nombre_ligne_totale = Range("A65000").End(xlUp).Row

'RAZ tous les sauts de page
ActiveSheet.ResetAllPageBreaks


'cacher/compter les lignes, ajouter les sauts de page
saut_page = 7 'saut initial
nb_saut = 1
n = 1
ReDim Preserve tableau(1 To 2, 1 To n)

'remplir un tableau contenant le nombre de ligne des tableaux
'cacher les lignes inutiles
For i = 7 To nombre_ligne_totale
    
    If Cells(i, 1).Value = "" And Cells(i, 3).Value = "" Then
        Rows(i).EntireRow.Hidden = True
    Else
        If Left(Cells(i, 3), 8) <> "Tableau " Then
        tableau(1, n) = tableau(1, n) + 1
        derniere_ligne = i
        End If
    End If
    
    If Left(Cells(i, 3), 8) = "Tableau " Then
        n = n + 1
        ReDim Preserve tableau(1 To 2, 1 To n)
        tableau(2, n - 1) = derniere_ligne
    End If
Next i
    
    
For i = 1 To UBound(tableau, 2)
    nb_ligne = nb_ligne + tableau(1, i)
    
    If nb_ligne > nombre_ligne_max_par_feuille Then
        ActiveWindow.View = xlPageBreakPreview
        nb_saut = nb_saut + 1
        If i = UBound(tableau, 2) Then
            'ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A" & derniere_ligne)
        Else
            ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=Range("A" & tableau(2, i) + 1)
            nb_ligne = 0
            ActiveWindow.View = xlNormalView
        End If
    End If
    
    
Next i

End Sub

Dites moi si cela fonctionne
Cordialement
 

JCGL

XLDnaute Barbatruc
Re : Ne pas tronquer les tableaux lors de l'impression

Bonjour à tous,

Peux-tu essayer en déposant dans le module de la Feuil1 :

Code:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = 0
    Rows("11:16").EntireRow.Hidden = True
    Rows("32:33").EntireRow.Hidden = True
    Rows("46:48").EntireRow.Hidden = True
    Rows("71:71").EntireRow.Hidden = True
    Rows("86:86").EntireRow.Hidden = True
End Sub

Private Sub CommandButton2_Click()
    Application.ScreenUpdating = 0
    Rows("6:100").EntireRow.Hidden = False
End Sub

Et dans le ThisWorkBook :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Application.ScreenUpdating = 0
    Range("A6:G99").Select
    With ActiveSheet.PageSetup
        .LeftMargin = Application.InchesToPoints(0)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0)
        .BottomMargin = Application.InchesToPoints(0)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
End Sub

A+ à tous
 

Pièces jointes

  • JC Print Pleine Page.xls
    34 KB · Affichages: 110

ascal44

XLDnaute Occasionnel
Re : Ne pas tronquer les tableaux lors de l'impression

Bonsoir JCGL,

Je voudrais imprimer en taille originale , donc sur plusieurs pages.

Quand je met aperçu avant impression et que je ferme l'aperçu j'ai un retour très lent des barres d'outils et plus de visuel de la page du fichier ???

C'est quoi ce bug ?
 

JCGL

XLDnaute Barbatruc
Re : Ne pas tronquer les tableaux lors de l'impression

Bonjour à tous,

Je ne pense pas que cela soit un "bug"...
Chez moi, c'est instantané. Si ce n'est pas le cas chez toi... J'ai du oublier de remettre le "Application.ScreenUpdating= 1" qui va bien chez certains.

Il me semble que tu veuilles le beurre et l'argent du beurre... (et je ne te parle pas de la crémière...).

Donne nous simplement la ligne où mettre le saut de page.

Et tu vas, surement, nous répondre : "Ben ça dépend si je masque ou affiche les lignes"...

XL peut presque tout... Si tant est qu'il ait les bonnes informations.

A+ à tous
 

ascal44

XLDnaute Occasionnel
Re : Ne pas tronquer les tableaux lors de l'impression

Eh ben oui : "Ben ça dépend si je masque ou affiche les lignes"...

Le masquage des lignes sont variables et les tableaux peuvent être modifiés dans le temps avec ajout ou retrait de lignes.

C'est bien là mon problème pour lancer des impressions régulières sans se prendre la tête à déplacer les sauts de pages manuellement.
 

JCGL

XLDnaute Barbatruc
Re : Ne pas tronquer les tableaux lors de l'impression

Bonjour à tous,

As-tu testé mon fichier... ?

Tu écris :" Le masquage des lignes sont variables et les tableaux peuvent être modifiés dans le temps avec ajout ou retrait de lignes."

Ton code établit les lignes à masquer ou à afficher...

Suivant ton clique sur le "CommandButtonX", le "zoom" à l'impression passe de 71 % à 83 % et inversement.

Ou bien, je n'ai rien compris, ce qui reste possible...

A+ à tous
 

ascal44

XLDnaute Occasionnel
Re : Ne pas tronquer les tableaux lors de l'impression

Bonjour ,

Et bien non les tableaux ne sont pas toujours encadrés de la même façon.

A l'heure actuelle j'ai une dizaine de possibilité de masquage de lignes sur les tableaux.

Cette nuit j'ai pensé qu'il faudrait repéré les débuts de tableaux par le chiffre 1 et la fin des tableaux par le chiffre 2 sur la colonne H.

Après pour l'écriture du code ça se complique pour moi.

Il faudrait placer les saut de pages sous les lignes comportant un 2 en insérant le maximum de tableaux possibles en taille originale sur une page sans les tronquer.
 

Discussions similaires

Réponses
2
Affichages
325

Statistiques des forums

Discussions
313 344
Messages
2 097 336
Membres
106 916
dernier inscrit
Soltani mohamed