Formatage onglet pour impression

Bonsoir à tous, dans la petite application que je développe, j'exporte des rapports en pdf avec un formatage préalable de l'onglet suivant le code suivant :

ActiveSheet.PageSetup.PrintArea = "A1:P" & DerniereLigne
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomPDF & "validation.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

dans un cas précis, ce formatage ne fonctionne pas et mes pages se retrouvent divisées en 3 colonnes (1 Colonne par page)

j'ai alors également essayé le code suivant :

 With ActiveSheet
        .ResetAllPageBreaks
        With .PageSetup
            .Orientation = xlPortrait
            .Zoom = 70
            .PrintArea = "A1:P" & DerniereLigne
            '.FitToPagesWide = 1
            '.FitToPagesTall = 1
        End With
    End With

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=NomPDF & "validation.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

difficile d'exposer tout sans faire un roman de 10 pages alors je joint le fichier, au démarrage, le menu 1 permets de générer un rapport pdf et excell et tout est OK, le menu 2 permet de reprendre le rapport généré en 1 et de diffuser une mise à jour et la l'export n'est plus au bon format alors que le code est strictement le même dans le cas 1 que dans le cas 2

Je ne trouve pas d'autre paramètres à gérer, je joint aussi à titre d'exemple les fichiers pdf générés cas 1 et cas 2

merci d'avance à toute personne susceptible de me suggérer quelquechose

bonne fin de journée

14validation.pdf (160.34 Ko)
15validation-cas-2.pdf (171.31 Ko)

Edit modo: modifié titre de sujet

je pensais avec ces3 lignes

             .Zoom = false
            .FitToPagesWide = 1
            .FitToPagesTall = 0
     

Merci je vais essayer cela, j'ai vu également des demandes d'accès utilisateur, je n'avais pas pensé à cela je viens juste de mettre en place la notion de niveaux utilisateurs, pour ceux qui le souhaites @LouReed je pense, me donner le profil user (Nom de session) du PC qui va ouvrir l'appli et je publierait une nouvelle version intégrant ce profil

bonne journée à tous

Bon au final voici le code qui formatte comme il le faut dans tous les cas :

    With ActiveSheet
        .ResetAllPageBreaks
        With .PageSetup
            .Orientation = xlPortrait
            .Zoom = False
            .PrintArea = "A1:P" & DerniereLigne
            .FitToPagesWide = 1
            .FitToPagesTall = False
        End With
    End With

Merci à @BsAlv qui m'as bien guidé, je n'avait jamais utilisé ces fonctions et je vais devoir faire quelques recherches pour bien en comprendre le fonctionnement car ce n'est pas très clair pour moi

bonne journée à tous

re, je ne comprenais pas la macro, mais mon dernier poste , modifiez le ".FitToPagesTall = 0" en ".FitToPagesTall = 999" (exagéré)

Sinon, donnez un peu plus d'explication

Merci, il faut que je comprenne mieux la fonctionnalité de .FitToPagesTall et .Fit toPagesWide pour pouvoir être plus clair mais je crois comprendre que l'un gère le dimensionnement vertical et l'autre le horizontal.

De mon côté ce que je souhaite c'est que le PDF soit sur une seule page en largeur (Toutes les colonnes de la PrintArea sur une page en largeur)

Bonne journée

une seule page en largeur >>> .FitToPagesWide = 1 and .zoom=false

Puis le seul choix suivant, c'est toutes les feuilles sur une page ou plusieurs = .FitToPagesTall = 1 ou 999 (999 ou autre = un nombre >= le nombre réel, donc on peut exagérer un peu)

Top, merci de l'éclaircissement

bonne journée

Rechercher des sujets similaires à "formatage onglet impression"