Au lieu de partir de mon projet, j'ai repris d'exemple1 et je l'ai modifié à ma sauce, et maintenant cela fonctionne!
En plus, cela a l'avantage de n'avoir pas besoin de créer d'objet Word, mais l'inconvénient cela affiche Word à chaque document à convertir et je ne réussis pas à le masquer.
CODE :
Option Explicit
Dim sFichier() As String ' liste des fichiers DOC à convertir
Dim sPathRacine As String, sFiles() As String
Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator
Private pErr As clsPDFCreatorError, opt As clsPDFCreatorOptions
Private noStart As Boolean, fac As Double, StartTime As Date
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Sub Enlever_Click()
If List1.ListCount <= 0 Then Exit Sub
List1.RemoveItem List1.ListIndex ' supprime
End Sub
Private Sub Ajouter_Click()
Dim i As Integer
With Dialog1
' Personnalisation
.DialogTitle = "Choisissez le(s) fichier(s) DOC"
.Filter = "Fichiers Word (*.DOC)| *.DOC"
.ShowOpen
End With
sFiles = Split(Dialog1.FileName, vbNullChar)
' Mettre dans une liste grâce à la fonction Split sur le caractère Null
If Len(Dialog1.FileName) <> 0 Then
'Un ou plusieurs fichiers
If sFiles(0) = Dialog1.FileName Then
List1.AddItem (sFiles(0))
Else
sPathRacine = sFiles(0) & ""
i = 1
Do
On Error GoTo Fin
List1.AddItem (sPathRacine & "\" & sFiles(i))
i = i + 1
Loop
End If
End If
Fin:
End Sub
Private Sub Form_Load()
noStart = True
'Initialisation du commondialog
Dialog1.Flags = &H200 Or &H80000
'Permet le multiselect (200)
'et la boite de dialogue est de type explorateur (80000)
Dialog1.MaxFileSize = 32767
'Nombre de caractères maximum du multiselect (Valeur par défaut=256)
Set PDFCreator1 = New clsPDFCreator
Set pErr = New clsPDFCreatorError
With PDFCreator1
.cVisible = True
If .cStart("/NoProcessingAtStartup") = False Then
If .cStart("/NoProcessingAtStartup", True) = False Then
Traitement.Enabled = False
Exit Sub
End If
AddStatus "Une instance de PDFCreator existe déjà, il faut le fermer!"
.cVisible = True
End If
' Get the options
Set opt = .cOptions
.cClearCache
noStart = False
End With
AddStatus "Le programme vient de démarrer"
End Sub
Private Sub Form_Unload(Cancel As Integer)
If noStart = False Then
DoEvents
PDFCreator1.cClose
End If
DoEvents
Set PDFCreator1 = Nothing
Set pErr = Nothing
Set opt = Nothing
End Sub
Private Sub quitter_Click()
Unload Me
End Sub
Private Sub Traitement_Click()
Dim DefaultPrinter As String
Dim i As Integer
Screen.MousePointer = vbHourglass
Traitement.Enabled = False
DefaultPrinter = PDFCreator1.cDefaultPrinter
PDFCreator1.cVisible = False
For i = 0 To List1.ListCount - 1
ImprimePDF (List1.List(i))
Sleep 1500 ' Pause 1.5 s sinon ne va imprimer que le dernier fichier
Next i
PDFCreator1.cVisible = True
PDFCreator1.cDefaultPrinter = DefaultPrinter
Screen.MousePointer = vbNormal
Traitement.Enabled = True
End Sub
Private Sub ImprimePDF(ByVal fichier As String)
Dim sRep, sNomFic As String
Dim i As Integer
'Séparer le chemin du nom de fichier
If InStr(fichier, "\") Then
For i = Len(fichier) To 0 Step -1
If Mid(fichier, i, 1) = "\" Then
Exit For
End If
Next i
sRep = Left(fichier, i)
sNomFic = Mid(fichier, i + 1)
sNomFic = Left(sNomFic, Len(sNomFic) - 4)
Else
sRep = ""
sNomFic = Left(fichier, Len(fichier) - 4)
End If
AddStatus "Début de la création du fichier PDF ..."
With opt
.AutosaveDirectory = sRep
.AutosaveFilename = sNomFic
.UseAutosave = 1
.UseAutosaveDirectory = 1
.AutosaveFormat = 0 ' PDF
End With
With PDFCreator1
Set .cOptions = opt
.cClearCache
.cDefaultPrinter = "PDFCreator"
.cPrintFile (fichier)
.cPrinterStop = False
End With
PDFCreator1.cPrinterStop = False
StartTime = Now
End Sub
Private Sub AddStatus(Str1 As String)
With txtStatus
If LenB(.Text) = 0 Then
.Text = Time & ": " & Str1
Else
.Text = .Text & vbCrLf & Time & ": " & Str1
End If
.SelStart = Len(.Text)
End With
End Sub
Private Sub PDFCreator1_eReady()
AddStatus """" & PDFCreator1.cOutputFilename & """ a été créé! (" & _
DateDiff("s", StartTime, Now) & " secondes)"
PDFCreator1.cPrinterStop = True
Screen.MousePointer = vbNormal
End Sub
Private Sub PDFCreator1_eError()
Set pErr = PDFCreator1.cError
AddStatus "Error[" & pErr.Number & "]: " & pErr.Description
Screen.MousePointer = vbNormal
End Sub


Si cela peut interresser des personnes, je peux mettre le projet dans la partie Code du site.