Bonjour,

Cela fait plusieurs heures que je cherche en vain une réponse à ma question alors je me décide à poster içi.

Je travaille en entreprise et nous avons une application métier qui génère des fichiers .xls tous les matins.

Mon objectif est de convertir certains de ces fichiers en .pdf automatiquement (sans aucune intervention de ma part car le traitement aura lieu très tôt le matin).

J'ai PDFCreator et CutePDF mais je pense que PDFCreator répond mieux au besoin d'automatisation que je rencontre.

J'ai récupéré un code sur Internet qui permet de faire ça mais uniquement si le fichier .xls est ouvert et que le focus est sur la feuille que l'on veut imprimer.

J'ai donc essayé d'adapter ce code pour qu'il aille chercher les fichiers .xls dans un dossier et qu'ils les impriment en .pdf tout seul comme un grand mais je n'ai abouti à rien.

Pourriez-vous m'aider svp ?

Merci d'avance pour vos réponses


Voici le code que j'ai récupéré :

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
 sNomPDF = "Essai.pdf"
    sNomXLS = "Test.xls"
    sCheminPDF = "c:\"
 
    '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"
        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
 
    ActiveWindow.SelectedSheets.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