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

VBA Word Discussion :

Publipostage VBA - word - génération de pdf ne marchant pas


Sujet :

VBA Word

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Publipostage VBA - word - génération de pdf ne marchant pas
    Bonjour

    je cherche à imprimer des documents issus de publipostage en pdf.
    J'ai regardé le poste suivant et cela m'a pas mal dépanné http://www.developpez.net/forums/d68...stage-pdf-vba/.

    Mais j'ai un soucis : lorsque j'appel la macro testPrintPDF avec deux arguments cela ne fonctionne pas.
    - si je suit en mode pas à pas : OK génération de mes pdf
    - si j'ai un point d'arrêt, génération du dernier pdf
    - si je suis en sans point d'arrêt et exécution, cela ne génère pas mes pdf.

    de plus pour générer mes pdf je dois mettre en commentaire les deux lignes suivantes :
    PDFCreator1.cClose (pas forcément gênant.
    ActivePrinter = oldPrinter (OK celle-là c'est pas grave)

    Quelqu'un aurait-il une idée ?

    Merci par avance
    ci-dessous l'appel à la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                stChemin = "C:TEMP\AF\MAIL\"
                stNom = xlSh.Cells(i, 1) & "-" & xlSh.Cells(i, 7) & "-" & Format(Date, "yy-mm-dd") & ".pdf"
                Call testPrintPDF(stChemin, stNom)
    ci-dessous le code de la macro modifiée :
    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
    Sub testPrintPDF(st1 As String, st2 As String)
    Dim oldPrinter As String
    Dim stChemin As String
    Dim stNom As String
     
     Shell "C:\Program Files\PDFCreator\PDFCreator.exe", vbNormalFocus
     
    Dim PDFCreator1 As New clsPDFCreator
    oldPrinter = ActivePrinter
    'On va mettre en mémoire dans une
    'variable le nom de l'imprimante par défaut
    ActivePrinter = "PDFCreator"
    'Mettre comme imprimante par défaut PDFCreator
    If Len(ActiveDocument.Path) = 0 Then
        stChemin = "C:TEMP\AF\MAIL\"
    Else
        'stChemin = ActiveDocument.Path
        stChemin = st1
    End If
    'Si le document n'a pas été sauvegardé, le PDF sera dans le répertoire c:\temp
    'et un nom par défaut documentPDF;pdf
    If Len(ActiveDocument.Name) = 0 Then
        stNom = "documentPDF.pdf"
    Else
        stNom = st2
    End If
    'les option PDFCreator
    With PDFCreator1
       .cOption("UseAutosave") = 1
       .cOption("UseAutosaveDirectory") = 1
       .cOption("AutosaveDirectory") = stChemin
       .cOption("AutosaveFilename") = stNom
       .cOption("AutosaveFormat") = 0                            ' 0 = PDF
       .cStart
       .cClearCache
    End With
    ActiveDocument.PrintOut Background:=True
    'PDFCreator1.cClose
    'ActivePrinter = oldPrinter
    ' Change l'imprimante par défaut
     
    End Sub

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    vite fait en passant, pourquoi l'outil externe pdfCreator ?

    Car depuis la version 2007 Word peut très bien enregistrer au format pdf …

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour Marc-L ,

    Merci pour ton retour.
    Du coup, non je ne savais pas qu'en VBA on pouvait le faire directement.

    En fait ma portion de code est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            If xlSh.Cells(i, 36) <> "O" Then
                     ....
                oDoc.SaveAs "C:TEMP\AF\COURRIER\" & xlSh.Cells(i, 2) & "_ATTESTATION_" & xlSh.Cells(i, 34) & "_" & Format(Date, "yyyy") & ".docx"
            ElseIf xlSh.Cells(i, 36) = "O" Then
                     ...
    'faire un pdf
                stChemin = "C:TEMP\AF\MAIL\"
                stNom = xlSh.Cells(i, 1) & "-" & xlSh.Cells(i, 7) & "" & Format(Date, "yy-mm-dd") & ".pdf"
                Call testPrintPDF(stChemin, stNom)
            End If
    si je tente de replacer (pour faire mon PDF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oDoc.SaveAs "C:TEMP\AF\COURRIER\" & xlSh.Cells(i, 2) & "_ATTESTATION_" & xlSh.Cells(i, 34) & "_" & Format(Date, "yyyy") & ".docx"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oDoc.SaveAs "C:TEMP\AF\COURRIER\" & xlSh.Cells(i, 2) & "_ATTESTATION_" & xlSh.Cells(i, 34) & "_" & Format(Date, "yyyy") & ".pdf"
    j'obtient bien une sorte de pdf mais à l'ouverture j'ai le message :
    Adobe Reader n'a pas pu ovrir xxxxx.pdf, car le type de fichier n'est pas pris en charge ou le fichier est endommagé.
    Il doit manquer quelque chose mais quoi ?

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Si mes souvenirs sont exacts, Saveas au format PDF ne fonctionne pas avec Word 2010. (Pour les autres, je ne sais pas.)

    Par contre, tu peux utiliser ExportasfixedFormat. C'est d'ailleurs le chemin utilisé par l'enregistreur de macros de Word 2010.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour clementmarcotte,

    Merci pour ce retour.
    J'ai modifié mon code comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                stNom = "C:TEMP\AF\COURRIER\" & xlSh.Cells(i, 2) & "_ATTESTATION_" & xlSh.Cells(i, 34) & "_" & Format(Date, "yyyy") & ".pdf"
                oDoc.ExportAsFixedFormat OutputFileName:=stNom, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False
    et du coup cela fonctionne !!

    un petit lien vers la page méthode :
    https://msdn.microsoft.com/fr-fr/lib.../ff840962.aspx


    Merci pour votre aide et du coup je vais pouvoir clôturer

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/03/2007, 15h44
  2. [vba/word] connection mysql et publipostage
    Par lecail65 dans le forum VBA Word
    Réponses: 8
    Dernier message: 31/08/2006, 00h48
  3. [VBA-W]Génération de plusieurs fichiers Word
    Par ennamsaoui dans le forum VBA Word
    Réponses: 4
    Dernier message: 10/05/2006, 13h21
  4. VBA/Word/Excel97/Imprimer un pdf sans ouvrir acrobat
    Par ouskel'n'or dans le forum VBA Word
    Réponses: 2
    Dernier message: 28/09/2005, 21h40
  5. [VB6][VBA][WORD 2003] Fusion - Publipostage.
    Par L.nico dans le forum VBA Word
    Réponses: 4
    Dernier message: 13/07/2005, 15h00

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