En manuel, dans Word, tu n'arrives pas enregistrer un document au format PDF non plus ?
Version imprimable
En manuel, dans Word, tu n'arrives pas enregistrer un document au format PDF non plus ?
Merci Fring,
En manuel, sous word ou excel, je ne peux pas enregistrer en PDF, il faut que je fasse "imprimer" et que je sélectionne l'imprimante virtuelle "PDFCreator".....
Et en te répondant, je commence à comprendre ce qui a pu se passer : étant donné que ma version de Excel n'offre pas la possibilité "d'enregistrer sous... PDF" , ton code ne peut pas fonctionner....alors qu'avec HTML, ça fonctionne puisqu'il apparait dans "enregistrer sous....HTML"
Donc, en fait, il faudrait passer par l'imprimante virtuelle....c'est à dire que l'"Export"doit être remplacé par "PRINT"....Code:WordDoc.ExportAsFixedFormat OutputFileName:=fichePD & nomfiche & ".pdf", ExportFormat:=wdExportFormatPDF
Mais si c'est ça, j'aurai besoin que tu m'aides car hier j'ai fait F2 pour trouver des instructions concernant PDF, et je n'ai rien trouvé.....qui a fonctionné....:aie:
Merci,
A+
Salut, bis repetita placent ... Cette formulation est pour Excel PC 2007+.
Utilise l'enregistreur de macros en sélectionnant l'imprimante PDFCreator et tu auras le code correspondant.
Merci kiki29,
J'avais déjà suivi ton conseil, (avec l'enregistreur de macro), je sais donc comment écrire mon imprimante virtuelle. Par contre c'est le code qui pose problème : la macro word ne peut pas être mise dans VBA excel, et donc, soit je crée et j'ouvre en permanence un fichier word avec la macro d'impression en PDF et je la fait tourner pour ma fiche, soit il a une autre solution (et c'est celle-là que je cherche.....:mouarf:)
Merci,
A+
Salut, voir ceci : exécuter macro Word à partir d'excel
Re, ici cela fonctionne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Option Explicit Sub Imprimer_DocWordDepuisExcel() Dim AppWord As Object Dim sChemin As String Dim sPrinterDefault As String sChemin = ThisWorkbook.Path & "\" & "Test.doc" Set AppWord = CreateObject("Word.Application") sPrinterDefault = AppWord.ActivePrinter AppWord.ActivePrinter = "PDFCreator" With AppWord.Documents.Open(sChemin) .PrintOut Background:=False, Copies:=1 .Close False End With AppWord.ActivePrinter = sPrinterDefault AppWord.Quit Set AppWord = Nothing End Sub
super kiki29,
exactement ce que je cherchais à faire !!!
j'ai juste une dernière petite galère...: au moment de l'impression en imprimante virtuelle, je suis obligé de valider = "enregistrer " + définir chemin du fichier pdf
j'ai essayé de mettreça ne fonctionne pas...idem avec "false "....Code:application .displayalert =true
il n'y à pas moyen de valider automatiquement et d'indiquer le chemin de l'emplacement du pdf ??
merci,
À+
Salut, il te faut paramétrer PDFCreator
Aller dans le dossier d'installation
• Lancer le moniteur d'impression PDFCreator.exe
Puis dans Menu Imprimante
• Options
• Enregistrement Automatique
Cocher
• Utiliser l'enregistrement automatique
• Utiliser ce répertoire pour l'enregistrement automatique
chez moi tous les PDF ( Adobe Acrobat, PDFCreator ) vont dans
C:\Documents and Settings\Philippe\Mes documents\PdfOut\
• Cliquer sur le bouton Enregistrer
ça fonctionne pile - poil !!!:ccool:
merci kiki29 :ccool:
dois-je en conclure qu' on ne peut pas mettre ces "arguments " (enregistrement et chemin) dans le code VBA et que donc, il faut modifier "manuellement " le chemin ?
merci,
À+
Salut, oui cela est faisable, livré brut de fonderie.
A titre purement documentaire : Imprimez vos documents Word au format PDF à l'aide de PDFCreatorCode:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78 Option Explicit Sub Imprimer_PDFCreator_SelFichier() Dim sDossier As String Dim FD As FileDialog, sNomPDF As String Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .AllowMultiSelect = False .Filters.Clear .Filters.Add "Documents Word", "*.doc*", 1 If .Show <> -1 Then Exit Sub DoEvents End With sNomPDF = "Test Word.pdf" sDossier = ThisWorkbook.Path & "\" PdfCreator FD.SelectedItems(1), sNomPDF, sDossier End Sub Private Sub PdfCreator(sNomFichier As String, sNomFichierOutPDF As String, sDossier As String) Dim jobPDF As Object Dim AppWord As Object Dim sPrinterDefault As String Set jobPDF = CreateObject("PDFCreator.clsPDFCreator") Set AppWord = CreateObject("Word.Application") 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") = sDossier .cOption("AutosaveFilename") = sNomFichierOutPDF ' 0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, ' 5=tif, 6=ps, 7=eps, 8=txt .cOption("AutosaveFormat") = 0 .cClearCache End With sPrinterDefault = AppWord.ActivePrinter AppWord.ActivePrinter = "PDFCreator" With AppWord.Documents.Open(sNomFichier) .PrintOut Background:=False, copies:=1 .Close False End With DoEvents With AppWord .ActivePrinter = sPrinterDefault .Quit End With Set AppWord = Nothing Do Until jobPDF.cCountOfPrintjobs = 1 DoEvents Loop jobPDF.cPrinterStop = False Do Until jobPDF.cCountOfPrintjobs = 0 DoEvents Loop jobPDF.cClose Set jobPDF = Nothing End Sub Private Sub KillPDFCreator() Dim RetVal As Long RetVal = Shell("Taskkill /im PDFCreator.exe /f", 0) End Sub
Merci kiki29 :ccool:
le code fonctionne super bien, même si d'après toi il est livré brut de fonderie....;)
Je suis arrivé à l'enregistrer avec le nom et dans le dossier que je souhaitais, en changeant sNomPDF et sDossier
Par contre, je ne suis pas arrivé à modifier le "FD" : il ne faudrait que le code demande où chercher le document (=ouverture de la boite dialogue), mais qu'il l'ouvre "automatiquement".....j'ai essayé de mettre, mais ça ne fonctionne pas, puisque d'après ce que j'ai compris FD "ouvre" la boite dialogue windows de recherche de fichier....Code:.Filters.Add "Chemin_Complet\Nom_Fichier",".doc", 1
Merci de m'indiquer la voie à suivre....
(et merci de m'avoir donné le lien de Heureux-oli, j'avais déjà regardé le tuto, mais je n'ai pas tout compris concernant les codes....mais je vais m'y replonger...:D)
A+
Re,ou autreCode:ChDir ThisWorkbook.Path
Merci kiki29,
J'ai essayé de mettreCa ne fonctionne pas,Code:
1
2
3
4
5
6
7
8 Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .AllowMultiSelect = False .Filters.Clear .Filters.Add ChDir ThisWorkbook.Path, 1 If .Show <> -1 Then Exit Sub DoEvents End With
J'ai essayémarche pas....Je comprends bien le "chdir", mais je ne sais pas où le mettre dans ton code......Code:set FD= ChDir ThisWorkbook.Path
Une dernière aide ?
Je te remercie :ccool:
A+
Re, tu fais n'importe quoi, l'aide en ligne |F1] n'est pas faite pour rien.
Code:
1
2
3
4
5
6
7
8 ..... Dim FD As FileDialog, sNomPDF As String Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path .AllowMultiSelect = False .....
Merci kiki29,
J'ai repris ton code et l'ai modifié suivant tes conseils :(je vais l'inclure dans mon code initial, et donc, il y aura une boucle typeCode:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 Option Explicit Sub Imprimer_PDFCreator_SelFichier() Dim sDossier As String Dim FD As FileDialog, sNomPDF As String Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path & "\Fiches\" & Sheets("Fichiers").Cells(1, 1) .AllowMultiSelect = False '.Filters.Clear '.Filters.Add "document word", "*.doc", 1 'If .Show <> -1 Then Exit Sub DoEvents End With sNomPDF = Sheets("Fichiers").Cells(1, 2) & ".pdf" sDossier = ThisWorkbook.Path & "\Fiches format PDF\" PDFCreator FD.SelectedItems(1), sNomPDF, sDossier End Sub Private Sub PDFCreator(sNomFichier As String, sNomFichierOutPDF As String, sDossier As String) Dim jobPDF As Object Dim AppWord As Object Dim sPrinterDefault As String Set jobPDF = CreateObject("PDFCreator.clsPDFCreator") Set AppWord = CreateObject("Word.Application") 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") = sDossier .cOption("AutosaveFilename") = sNomFichierOutPDF ' 0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, ' 5=tif, 6=ps, 7=eps, 8=txt .cOption("AutosaveFormat") = 0 .cClearCache End With sPrinterDefault = AppWord.ActivePrinter AppWord.ActivePrinter = "PDFCreator" With AppWord.Documents.Open(sNomFichier) .PrintOut Background:=False, copies:=1 .Close False End With DoEvents With AppWord .ActivePrinter = sPrinterDefault .Quit End With Set AppWord = Nothing Do Until jobPDF.cCountOfPrintjobs = 1 DoEvents Loop jobPDF.cPrinterStop = False Do Until jobPDF.cCountOfPrintjobs = 0 DoEvents Loop jobPDF.cClose Set jobPDF = Nothing End Sub Private Sub KillPDFCreator() Dim RetVal As Long RetVal = Shell("Taskkill /im PDFCreator.exe /f", 0) End Sub
et donc cells(1,2) deviendra cells (j,2)....)Code:for j = 1 to derniereligne
Lorsque j'ai tatonné pour modifier le code, après molt essais ça a fonctionné. J'ai sauvegardé, j'ai éteint/rallumé l'ordi et ce matin, lorsque je veux faire tourner le code il s'arrête àavec pour message d'erreur "argument ou appel de procédure incorrect".....et là, je ne comprends plus rien....hier soir cela fonctionnait très bien, je n'ai rien changé hormis avoir éteint l'ordi...Code:PdfCreator FD.SelectedItems(1), sNomPDF, sDossier
Une idée ?
Merci,
A+
Re,
Je viens de faire plusieurs essais (en m'inspirant du F2....), et en modifiantparCode:PDFCreator FD.SelectedItems(1), sNomPDF, sDossier
Cela fonctionne...:DCode:
1
2 dim sNomfichier as string PDFCreator sNomfichier, sNomPDF, sDossier
Mais je ne sais pas si ce "remplacement" entreet "sNomfichier" a une conséquence.....Code:FD.SelectedItems(1)
J'ai fait un test en l'incluant dans mon code, tout fonctionne, mais.....je préfère m'assurer que je ne fais pas une énième bêtise......:aie:
Merci,
A+
(je propose aussi de modifier l'intitulé du post et rajouter "impression en pdf"...)
Apparemment, le code ne pose pas de problème, je vous remercie tous pour vos conseils, soutien, apports.
J'ai modifié l'intitulé afin qu'il se rapproche au plus près du post.....
A+ pour de prochaines aventures.....:ccool: