création d'un PDF pour chaque onglet

DAN59350

XLDnaute Nouveau
Bonjour,
Je souhaiterai creer automatiquement des fichiers PDF qui porteraient le nom de chaque onglet de mon classeur.

Après avoir recherché sur le forum, j'ai fait une macro qui me créé un fichier PDF par onglet. Cependant, en visualisant chaque PDF je me rends compte qu'ils sont identiques au dernier onglet de mon classeur. Voici ma macro :
Dim NomPdf As String
Dim ws As Object
Dim pdfjob As PDFCreator.clsPDFCreator
Dim defaultprinter As String
Dim Pdfpath As String
For Each ws In Worksheets
'instancier un nouvel objet PDFCreator
Set pdfjob = New clsPDFCreator
NomPdf = ws.Name
Pdfpath = "R:\suivi des depenses\2010\JDD\PDF\CD"
'paramétrer l'objet PDFCreator
With pdfjob
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") = Pdfpath
.cOption("AutosaveFilename") = NomPdf
.cOption("AutosaveFormat") = 0 '0 =PDF
.cClearCache
End With
'imprime le document en PDF
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="PDFCreator"
'attend que le document soit entré dans la file d'impression
Do Until pdfjob.cCountOfPrintjobs = 1
DoEvents
Loop
pdfjob.cPrinterStop = False
'attend que l'impression du document soit terminée
Do Until pdfjob.cCountOfPrintjobs = 0
DoEvents
Loop
Application.Wait Now + TimeValue("00:00:05")
pdfjob.cClose
Set pdfjob = Nothing
Next ws
suppProcPDFCreator
MsgBox ("Impression terminée")
Application.ActivePrinter = _
La boucle ne semble fonctionner que pour le changement de nom du fichier, le bouton de ma macro se trouve sur le dernier onglet.
Je vous remercie pour votre aide.
 

macsscam

XLDnaute Junior
Re : création d'un PDF pour chaque onglet

Bonjour DAN59350, le forum,

Tu peux utiliser la balise CODE pour intégrer ton code de manière plus élégante dans le post.

Pour répondre à ta question, il me semble que le problème vient de cette ligne :

Code:
'imprime le document en PDF
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="PDFCreator"

Car tu imprimes les SelectedSheets donc les feuilles sélectionnées (la dernière si le bouton est dessus.

Tu peux remplacer la ligne par celle-ci (imprimer la feuille en utilisant la variable correspondant à ta feuille en cours) :
Code:
'imprime le document en PDF
ws.PrintOut Copies:=1, ActivePrinter:="PDFCreator"

Bon courage,

--
macsscam
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
640

Statistiques des forums

Discussions
312 251
Messages
2 086 623
Membres
103 266
dernier inscrit
moonie