IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Probleme Generation PDF.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Par défaut Probleme Generation PDF.
    Bonjour,
    Je rencontre actuellement un problème dans la création de PDF depuis VBA.

    une macro me permet de générer des PDF à partir d'une feuille Excel, mais à l'ouverture, les pages (des graphes) ont une rotation de 90 °.
    L'objectif étant d'envoyer ces pdfs automatiquement par mail (sans les ouvrir pour transposer), est ce qu'il existe une solution pour vba pour faire une rotation (horaire) dans un pdf, ou peut-on jouer sur ces paramètres dans les fonctions d'impressions.
    Merci pour tout élément de réponse

    Ps : voila le code utilisé pour imprimer en pdf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        'Lancement de l'impression
      Selection.PrintOut copies:=1, collate:=True, _
        printtofile:=True, collate:=True, prtofilename:=chemin_pdf

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Par défaut
    peut être que tu dois transformer selection en la zone d'impression, ainsi tu pourras définir la mise en page de ta feuille en portrait.
    Par contre tu es sûr que ce code génère un pdf? Personnellement je n'ai jamais réussi à utiliser printout pour générer un pdf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    With ActiveSheet.PageSetup
        .PrintArea = Selection.Address
        .Orientation = xlPortrait
    End With
    ActiveSheet.PrintOut copies:=1, collate:=True, _
                        printtofile:=True, collate:=True, prtofilename:=chemin_pdf

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par Benjîle Voir le message
    Par contre tu es sûr que ce code génère un pdf? Personnellement je n'ai jamais réussi à utiliser printout pour générer un pdf.
    Il est possible en fonction de la solution utilisée que Printout génère non pas un fichier PDF mais un fichier Postscript. Celui-ci peut être converti en PDF via Ghostscript par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    '*-------------------------------------------------------------------------
    '* Print Selection Using CutePDF Writer producing temporary postscript file
    '*-------------------------------------------------------------------------
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="CutePDF Writer", _
          PrintTofile:=True, Collate:=True, PrToFilename:=ps_fullname
     
    '*-------------------------------------------------------------------------
    '* Set-up Full PDF Filename = Excel workbookname replacing xls by pdf
    '*-------------------------------------------------------------------------
    PdFFullName = Left(AppFullName, Len(Trim(AppFullName)) - 3) & "PDF"
     
    '*-------------------------------------------------------------------------
    '* Converts Temp Postscript File to PDF
    '*-------------------------------------------------------------------------
    Call ConvertFile(ps_fullname, PdFFullName)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Public Function CallGS(ByRef astrGSArgs() As String) As Boolean
        Dim intReturn As Long
        Dim intGSInstanceHandle As Long
        Dim aAnsiArgs() As String
        Dim aPtrArgs() As Long
        Dim intCounter As Long
        Dim intElementCount As Long
        Dim iTemp As Long
        Dim callerHandle As Long
        Dim ptrArgs As Long
     
        ' Print out the revision details.
        ' If we want to insist on a particular version of Ghostscript
        ' we should check the return value of CheckRevision().
        CheckRevision (704)
     
        ' Load Ghostscript and get the instance handle
        intReturn = gsapi_new_instance(intGSInstanceHandle, callerHandle)
        If (intReturn < 0) Then
            CallGS = False
            Return
        End If
     
        ' Capture stdio
        intReturn = gsapi_set_stdio(intGSInstanceHandle, AddressOf gsdll_stdin, AddressOf gsdll_stdout, AddressOf gsdll_stderr)
     
        If (intReturn >= 0) Then
            ' Convert the Unicode strings to null terminated ANSI byte arrays
            ' then get pointers to the byte arrays.
            intElementCount = UBound(astrGSArgs)
            ReDim aAnsiArgs(intElementCount)
            ReDim aPtrArgs(intElementCount)
     
            For intCounter = 0 To intElementCount
                aAnsiArgs(intCounter) = StrConv(astrGSArgs(intCounter), vbFromUnicode)
                aPtrArgs(intCounter) = StrPtr(aAnsiArgs(intCounter))
            Next
            ptrArgs = VarPtr(aPtrArgs(0))
     
            intReturn = gsapi_init_with_args(intGSInstanceHandle, intElementCount + 1, ptrArgs)
     
            ' Stop the Ghostscript interpreter
            gsapi_exit (intGSInstanceHandle)
        End If
     
        ' release the Ghostscript instance handle
        gsapi_delete_instance (intGSInstanceHandle)
     
        If (intReturn >= 0) Then
            CallGS = True
        Else
            CallGS = False
        End If
     
    End Function
     
    Private Function ConvertFile(Ps_file As Variant, Pdf_file As Variant) As Boolean
        Dim astrArgs(10) As String
        astrArgs(0) = "ps2pdf" 'The First Parameter is Ignored
        astrArgs(1) = "-dNOPAUSE"
        astrArgs(2) = "-dBATCH"
        astrArgs(3) = "-dSAFER"
        astrArgs(4) = "-r300"
        astrArgs(5) = "-sDEVICE=pdfwrite"
        astrArgs(6) = "-sOutputFile=" & Trim(Pdf_file)
        astrArgs(7) = "-c"
        astrArgs(8) = ".setpdfwrite"
        astrArgs(9) = "-f"
        astrArgs(10) = Trim(Ps_file)
        ConvertFile = CallGS(astrArgs)
    End Function

Discussions similaires

  1. probleme generation de pdf
    Par vaness303 dans le forum Jasper
    Réponses: 3
    Dernier message: 06/04/2011, 16h32
  2. [BIRT] Generation PDF
    Par mathieu77186 dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 27/06/2006, 14h48
  3. Réponses: 6
    Dernier message: 23/05/2006, 09h05
  4. [Devc++] probleme generation du .exe
    Par ankou82 dans le forum SDL
    Réponses: 4
    Dernier message: 02/05/2006, 13h16
  5. [XSL-FO] xml vers xsl-fo (pour generation PDF ou RTF)
    Par dams50 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 13/12/2003, 21h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo