Transformation en PDF

Lolo92

XLDnaute Nouveau
Bonjour à tous,
t
J'ai une Userform sur excel, je transfère des données dans Word pour créer un doc. J'arrive à créer se document, remplir les champs, sauvegarder et fermer ce document. Seulement, je souhaiterais avoir un aperçu avant la fermeture et la sauvegarde. Mais où ilo serait impossible de faire des modifs. je pense donc à le convertir en PDF. C'est pourquoi, j'utilise PDF creator. Mais je ne m'en sors pas avec. Je n'arrive pas à convertir le doc Word et visualiser le doc en pdf.

C'est pas clair mais j'me comprends :p
Désolé mais je débute en programmation...
Bref, si vous avez compris, vous pourriez m'aider? :confused:

Merci bien.
 

kiki29

XLDnaute Barbatruc
Re : Transformation en PDF

Salut, comme tu as PDFCreator installé
le code suivant devrait fonctionner pour la sauvegarde en PDF
Code:
Option Explicit

Sub Tst()
Dim DefaultPrinter As String
    
    DefaultPrinter = Application.ActivePrinter
    Application.ActivePrinter = "PDFCreator"

    Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
        wdPrintDocumentContent, Copies:=1
        
    Application.ActivePrinter = DefaultPrinter
End Sub

Il y a une option à cocher dans PDFCreator.exe
Menu Imprimante/Options Enregistrement Automatique : Ouvrir le document avec l'application par défaut après
l'enregistrement automatique

Voir également Imprimez vos documents Word au format PDF
 
Dernière édition:

Lolo92

XLDnaute Nouveau
Re : Transformation en PDF

Bonjour,

Après plusieurs essais et adaptation de code, cela foncitonne très bien. Merci.
Par contre, j'ai encore un souci, c'est que cela fonctionne uniquement si mon imprimante par défaut est PDFcreator, hors, ça n'est pas le cas. Et quand j'utilise la fonction "Application.activeprinter = pdfcreator", j'ai droit à des messages d'erreur....
 

kiki29

XLDnaute Barbatruc
Salut, perso je n'ai aucun message d'erreur et j'ai une imprimante physique Epson, Acrobat et PDFCreator ainsi que Microsoft XPS Document Writer
A essayer,car sans plus de précision sur le message d'erreur difficile de faire qqch
Code:
"PDFCreator sur Ne00:"
00 dépendant de l'ordre d'installation des pilotes d'imprimantes
 

Lolo92

XLDnaute Nouveau
Re : Transformation en PDF

Bon, alors, j'ai un peu avancé.
J'arrive à le faire sur un doc excel qui est dans le classeur qui comprend mon userform. Par contre, ça ne marche pas pour mon document word....
Je n'ai pas le code à dispo mais voici ma méthode (peut-être que le pb viens de là):
- JE remplis mon userform
- Je remplis grace à ça, mon doc word
- Je sauvegarde mon doc
- Je "l'imprime" sur pdf Creator
Cela marche très bien si pdfcreator est l'imprimante par défaut....
 

Lolo92

XLDnaute Nouveau
Re : Transformation en PDF

Juste une précision: Je débute, ce code est brut et risque de faire mal aux yeux de certains ;). Je recherche d'abord la fonctionnalité et après je pourrai le simplifier. Mais je prends tout les conseils.:)

Code:
Private Sub Aperçu_Click()
Dim Rep As Integer
Dim a As String
Dim b As String
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte
Dim pdfjob As PDFCreator.clsPDFCreator
Dim sPDFName As String
Dim sPDFPath As String
Dim oldprint As String
Dim Nomfichier
oldprint = Application.ActivePrinter
Application.ActivePrinter = "PDFCreator sur Ne00:"


If Auteur.Text <> "" Then
Feuil2.Select
Range("A2:F9").ClearContents

Dim k As Integer, j As Integer
    'Boucle sur toutes les lignes
   a = Initiale.Caption
   b = Numdevis.Caption

   Feuil2.Select
    For k = 1 To Recap.ListItems.Count
        Cells(k + 1, 1) = Recap.ListItems(k).Text
        
        'Boucle sur les colonnes
        For j = 1 To Recap.ColumnHeaders.Count - 1
            Cells(k + 1, j + 1) = Recap.ListItems(k).ListSubItems(j).Text
        Next j
    Next k
    
    Set WordApp = CreateObject("word.application")    'ouvre une session Word
    Set WordDoc = WordApp.Documents.Open("C:\Users\****\Desktop\DAI.doc")    'ouvre le document Word
    WordDoc.Bookmarks("Société").Range.Text = Client.Text
    WordDoc.Bookmarks("Contact").Range.Text = Contact.Text
    WordDoc.Bookmarks("Email").Range.Text = Email.Text
    WordDoc.Bookmarks("Fax").Range.Text = Fax.Text
    WordDoc.Bookmarks("Numdevis").Range.Text = a & b
    WordDoc.Bookmarks("Modele").Range.Text = Machine.Text
    WordDoc.Bookmarks("Serial").Range.Text = Série.Text
    WordDoc.Bookmarks("Recap").Select
    WordApp.Visible = False   'Word est masqué pendant l'opération
    Range("A1:F10").Copy
    WordApp.Selection.Paste
    WordDoc.Tables(1).AutoFitBehavior wdAutoFitWindow
    Application.CutCopyMode = False
    WordDoc.SaveAs ("C:\Users\****\Desktop\" & b & ".doc")
    'Application.ActivePrinter = "PDFCreator sur Ne00:"
    sPDFName = b & ".pdf"
    sPDFPath = ("C:\Users\****\Desktop")
    Set pdfjob = New PDFCreator.clsPDFCreator
    With pdfjob
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Can't initialize PDFCreator.", vbCritical + _
                    vbOKOnly, "PrtPDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sPDFPath
        .cOption("AutosaveFilename") = sPDFName
        .cOption("AutosaveFormat") = 0    ' 0 = PDF
        .cClearCache
    End With
    'Print the document to PDF
    WordDoc.PrintOut Copies:=1 ' ActivePrinter:="PDFCreator"
    'Wait until the print job has entered the print queue
    Do Until pdfjob.cCountOfPrintjobs = 1
        DoEvents
    Loop
    pdfjob.cPrinterStop = False
    'Wait until PDF creator is finished then release the objects
    Do Until pdfjob.cCountOfPrintjobs = 0
        DoEvents
    Loop
    pdfjob.cClose
    Set pdfjob = Nothing
    WordDoc.Close True 'ferme le document word en sauvegardant les données
    WordApp.Quit 'ferme la session Word
    
Kill ("C:\Users\****\Desktop\" & b & ".doc")
Range("A2:F9").ClearContents

Feuil1.Select
Application.ActivePrinter = oldprint

Nomfichier = "C:\Users\****\Desktop\" & b & ".pdf"
    If Dir(Nomfichier) <> "" Then
    ShellExecute 0, "open", Nomfichier, "", "", 0
'    Application.PrintOut Background:=True, Copies:=1, Pages:="1"
   ' Application.Wait Now + TimeValue("00:00:15")
    'Application.Quit
Else
    MsgBox "Chemin ou fichier introuvable."
    End If
Valider.Enabled = True
Modifier.Enabled = True
Else
MsgBox "Qui est l'auteur du devis?", vbOKOnly + vbInformation, "Attention"
End If
End Sub
 

Roitelet

XLDnaute Nouveau
Re : Transformation en PDF

Bonjour,
J'avais un problème similaire et j'ai réussi à faire ce que je voulais avec :
Code:
Sheets("Feuille1").Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Sauvegarde_en_pdf.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
        False
Est-ce que cela peut t'aider ?
 

Discussions similaires

Réponses
11
Affichages
288

Statistiques des forums

Discussions
312 505
Messages
2 089 067
Membres
104 015
dernier inscrit
kkgk