Copie en pdf

AnneSophie

XLDnaute Nouveau
Bonjour, j'aimerais savoir si c'est possible de copier une feuille d'un fichier excel en pdf, sachant que les valeurs présente sur cette page dépendent des autres feuilles du fichier?

Merci

AnneSophie
 

JNP

XLDnaute Barbatruc
Re : Copie en pdf

Bonjour AnneSophie :),
Quand tu fais un PDF, tu ne copies pas, tu fais une impression dans un fichier :p...
Donc évidemment, comme sur ton papier, les liens avec les autres feuilles n'ont aucune importance :rolleyes:...
Bon courage :cool:
 

kiki29

XLDnaute Barbatruc
Re : Copie en pdf

Salut,pour créer un fichier au format PDF avant Excel 2007 SP2 ,qui inclut cette possibilité en natif,il te faut Acrobat Distiller(payant) ou par exemple PDFCreator (gratuit) . cela te rajoutera une imprimante virtuelle
Ensuite via Google tu devrais trouver la manière de procéder, par exmple si tu désires le sauver dans un dossier précis sous un nom précis
Code:
Option Explicit

Sub TstPdfCreator()
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String
    
    sNomPDF = "commande_" & Range("B13") & ".pdf"
    sCheminPDF = ThisWorkbook.Path & "\"

    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

    Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")

    With JobPDF
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sCheminPDF
        .cOption("AutosaveFilename") = sNomPDF
        
        '   0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
        .cOption("AutosaveFormat") = 0
        .cClearCache
    End With

    ActiveWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"

    'Fichier dans la file d'attente
    Do Until JobPDF.cCountOfPrintjobs = 1
        DoEvents
    Loop
    JobPDF.cPrinterStop = False

    'Attendre que la file d'attente soit vide
    Do Until JobPDF.cCountOfPrintjobs = 0
        DoEvents
    Loop
    JobPDF.cClose
    Set JobPDF = Nothing
End Sub

car sinon cela suffit
Code:
 ActiveWorkbook.PrintOut copies:=1, ActivePrinter:="PDFCreator"
et se fera en fonction des réglages que tu auras choisis via les options de PDFCreator.exe
 
Dernière édition:

AnneSophie

XLDnaute Nouveau
Re : Copie en pdf

Bonjour,

je n'arrive pas à enregistrer le fichier en pdf.
Voila ma macro de départ:
Private Sub Archivage()
ActiveWorkbook.Save
monfichier = ThisWorkbook.Name
d = Format(Cells(3, 8), "dd-mm-yyyy")
c = "W:\COMMUN\" + Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & "_" & d
cd = ActiveWorkbook.Path
ActiveWorkbook.SaveAs c
Workbooks.Open (cd & "\" & monfichier)
ThisWorkbook.Close
End Sub

Le souci c'est que le fichier est trop gros, c'est donc pour cela que je voudrais enregistrer une copie en pdf de la feuille 1 uniquement.

Est ce possible de juste mmodifier ma macro de départ pour pouvoir faire la copie en pdf?

Merci

Bonne journée
 

AnneSophie

XLDnaute Nouveau
Re : Copie en pdf

je l'ai déja installer.
Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 18/04/2011 par lerendu
'

'
Application.ActivePrinter = "FreePDF XP sur Ne01:"

ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"FreePDF XP sur Ne01:", Collate:=True
End Sub

Avec cette macro, ça enregistre en pdf mais je ne sais pas comment faire pour que le nom du fichier et l'endroit ou enregistrer se fasse de façon automatique comme dans la macro précédente.
 

kiki29

XLDnaute Barbatruc
Re : Copie en pdf

Re,sur FreePDF mit VBA aufrufen j'ai trouvé ceci
Code:
Sub TestDruck()
Dim strAktuellerDrucker As String
    strAktuellerDrucker = Application.ActivePrinter
    Worksheets("Rechnung").PrintOut ActivePrinter:="FreePDF au Ne06:",_
                        PrintToFile:=True, PrToFileName:="C:\test.ps"
    Shell ("c:\programme\freepdf_xp\freepdf.exe c:\test.ps /a /d /x")
    Application.ActivePrinter = strAktuellerDrucker
End Sub

Cela veut dire qu'il génère tout d'abord un fichier PS (PostScript)
puis par Shell ..... le fichier PDF ?

Donc,à priori
Code:
.....
Dim sNomFichierPS As String

    sNomFichierPS = ThisWorkbook.Path & "\" & "Test.ps"
    Worksheets("Rechnung").PrintOut ActivePrinter:="FreePDF au Ne06:",_
                        PrintToFile:=True, PrToFileName:=sNomFichierPS
   Shell "c:\programme\freepdf_xp\freepdf.exe" & sNomFichierPS & "/ a / d / x"
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
222
Réponses
8
Affichages
454

Statistiques des forums

Discussions
312 488
Messages
2 088 859
Membres
103 978
dernier inscrit
bderradji