Feuille Excel en Page PDF sur toute la largeur

winflow Messages postés 179 Statut Membre -  
Zoul67 Messages postés 2001 Statut Membre -
Bonjour,

J'ai une fonction qui permet de redimensionner une feuille Excel pour qu'elle tienne sur une page A4 en PDF. Seulement la feuille ne fait pas toute la largeur de la page ... Voici mon code :

'Fonction qui redimensionne les annexes de type A. Bat
Sub feuille_page(n As String)
    Workbooks(workb).Activate
    'Redimensionnement automatique des colonnes
    Sheets(n).Columns.AutoFit
    Sheets(n).Columns(6).ColumnWidth = 3
    Dim last_row As Integer
    Dim i As Integer
    Dim temp As Boolean
    temp = False
     'Extrait de code enlevé car confidentiel
     [...]
    'Paramètrage de la feuille
    With Sheets(n).PageSetup
        'Format A4
        '.PaperSize = xlPaperA4
        .Zoom = False
        'Tient sur une feuille en hauteur
        .FitToPagesTall = 1
        'Tient sur une feuille en largeur
        .FitToPagesWide = 1
        'Aire d'impression
        .PrintArea = "A1:I" & last_row
        'Pas de marges
        .LeftMargin = Application.InchesToPoints(0)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0)
        .BottomMargin = Application.InchesToPoints(0)
        .HeaderMargin = Application.InchesToPoints(0)
        .FooterMargin = Application.InchesToPoints(0)
    End With
End Sub



Merci d'avance,

--
Cordialement

Winflow

1 réponse

  1. Zoul67 Messages postés 2001 Statut Membre 149
     
    Bonjour,

    Normal, tu as indiqué dans ton (?) code que ça doit tenir sur une page.
    Si ton document est beaucoup plus haut que large, toute la largeur ne sera pas utilisée.

    A+
    0
    1. winflow Messages postés 179 Statut Membre 22
       
      Oui mais j'aimerais que la feuille tienne sur toute la largeur
      0
    2. Zoul67 Messages postés 2001 Statut Membre 149
       
      Ce n'est pas un problème VBA mais un problème de mise en page Excel. Tu veux élargir les colonnes pour que ça continue de tenir sur une page ? Ou tu veux couvrir toute la largeur en imprimant sur plusieurs pages si nécessaire ?
      0
    3. winflow Messages postés 179 Statut Membre 22
       
      Je veux élargir les colonnes de ma feuille pour qu'elles tiennent sur une page A4 en largeur
      0
    4. Zoul67 Messages postés 2001 Statut Membre 149
       
      Donc il faut que tu appliques un coefficient multiplicatif à la largeur de tes colonnes :
      For i=1to 9
      Sheets(n).Columns(i).Width=Int(Sheets(n).Columns(i).Width*coeff
      Next i

      Au préalable tu dois calculer le coeff en fonction de la somme des hauteurs des lignes et celle de la largeur des colonnes :
      hauteur_page = 0
      largeur_page = 0
      For l=1 to lastrow
      hauteur_page = hauteur_page + Sheets(n).Rows(l).Height
      Next l

      For c=1 to 9
      largeur_page = largeur_page + Sheets(n).Column(c).Width
      Next l

      If largeur_page/hauteur_page < 21/29.7 Then
      coeff=(hauteur_page * 21) / (largeur_page * 29.7)
      0
    5. Zoul67 Messages postés 2001 Statut Membre 149
       
      étrange, je pense que ma dernière réponse a été effacée.
      Il faut que tu fasses le rapport de la largeur de tes colonnes sur la hauteur de tes lignes et que tu appliques un coefficient à chaque colonne pour en augmenter la largeur.

      Si un modérateur pouvait exhumer ma réponse (lien 5)... merci !
      0