Word : Macro conversion pdf

Fermé
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016 - 5 déc. 2015 à 13:25
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016 - 7 déc. 2015 à 15:00
Bonjour,

J'ai un publipostage qui à la fusion, donne des documents pour 125 destinataires. J'ai trouvé une macro que j'ai mis dans word, pour qu'une fois la base de données excel sélectionnées, je puisse avoir un enregistrement des fichiers word, séparément, donc 125, avec des caractéristiques pour le noms de chaque fichier et un emplacement bien précis d'enregistrement. E ça fonctionne très bien. En gros la macro, elle fusionne, coupe, nomme, enregistre et range les fichiers sous format word. PAR CONTRE ces fichiers, j'ai aussi besoin de les avoir sou format pdf dans un emplacement précis, avec les meme caractéristiques de nom de fichier. Le problème c'est que si je fais la meme macro en changeant juste le format .pdf dans la macro, les fichiers on bien les caractéristique visuels d'adobe mais ne s'ouvre pas (erreur quand je les ouvre... endommagé ou ....)

voici ma macro de base pour l'enregistrement sous word...que dois je faire ou rajouter pour la version pdf ???

Public Sub GenerationDocuments()

' Déclaration des variables
Dim recordCount As Integer
Dim index As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource

' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource

recordCount = oDoc.MailMerge.DataSource.recordCount
Debug.Print recordCount & " a publier"

For index = 1 To recordCount
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = index

.DataSource.LastRecord = index

' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument

' Exécution du publipostage
.Execute

' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = index

'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(3).Value
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; index
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "E:\Temp\test\" & DocName & ".doc"
.Close
End With
Next index

End Sub
A voir également:

7 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
5 déc. 2015 à 13:33
Bonjour,

Il faudrait lire les réponses qui te sont faites!!!!!!!!!!

https://forums.commentcamarche.net/forum/affich-32860432-macro-word-conversion-vba
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
5 déc. 2015 à 14:38
je l'ai lu... ca ne fonctionne pas, j'ai besoin de faire ces deux actions sur le meme fichier. Le publipostage... ou alors je n'arrive pas a caser ça comme il faut, ce qui en revient à : j'ai quand même besoin d'aide !!!! Ca me faciliterait que quelqu'un me donne la macro qui fasse les deux !
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
5 déc. 2015 à 14:53
je l'ai lu... ca ne fonctionne pas

Mais tu n'as pas répondu!

J'aurais pu te dire comment adapter ce code, parce que chez moi cela fonctionne!
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
5 déc. 2015 à 15:06
ca fonctionne pas comme je veux c'est à dire avoir les deux actions : word et pdf
bref...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
5 déc. 2015 à 15:26
a adapter

Option Explicit
Dim chemin As String
Private Sub CommandButton1_Click()
chemin = "C:\Users\.....\Documents\Nouveau dossier\" 'chemin a adapter
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs chemin & ActiveDocument.Name & ".doc"
End With
VersPDF
End Sub
Sub VersPDF()
'macro écrite par m@rina
Dim nfichier As String, nfichier2 As String, intpos As Byte
nfichier = ActiveDocument.Name
'trouve la position de l'extension
intpos = InStrRev(nfichier, ".")
'remplace l'extension doc par pdf
nfichier = Left(nfichier, intpos - 1)
nfichier2 = nfichier & ".pdf"
'enregistre dans le dossier en cours
ActiveDocument.ExportAsFixedFormat outputFileName:=chemin & nfichier2, _
exportFormat:=wdExportFormatPDF
End Sub

0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
6 déc. 2015 à 14:01
Bonjour,

Je vais essayer et je te tiens au courant. Merci
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
6 déc. 2015 à 14:04
question bête mais le
"C:\Users\.....\Documents\Nouveau dossier\" 'chemin a adapter

de la macro, je mets le chemin ou je veux que ce soit sauvegarder ???

Je sais.... question très bête...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
6 déc. 2015 à 15:03
Dim DocName As String 
Dim chemin As String

Public Sub GenerationDocuments() 

' Déclaration des variables 
Dim recordCount As Integer 
Dim index As Integer 
Dim oDoc As Document 
Dim oDS As MailMergeDataSource 

' Affectation des objets 
Set oDoc = ActiveDocument 
Set oDS = oDoc.MailMerge.DataSource 

recordCount = oDoc.MailMerge.DataSource.recordCount 
Debug.Print recordCount & " a publier" 

For index = 1 To recordCount 
With oDoc.MailMerge 
'Définition du premier et dernier enregistrement 
.DataSource.FirstRecord = index 

.DataSource.LastRecord = index 

' Envoi des données dans un nouveau document 
.Destination = wdSendToNewDocument 

' Exécution du publipostage 
.Execute 

' Actualisation de l'enregistrement pour la sauvegarde 
.DataSource.ActiveRecord = index 

'Utilisation de deux champs pour obtenir le nom du document 
DocName = .DataSource.DataFields(3).Value 
DocName = DocName & "-" & .DataSource.DataFields(4).Value 
Debug.Print DocName; index 
End With 
' Sauvegarde du document publiposté 
chemin = "E:\Temp\test\" & DocName & ".doc" 
With ActiveDocument 
.SaveAs chemin  
End With 
Next index 
'enregistre en PDF
VersPDF
End Sub

Sub VersPDF()
'macro écrite par m@rina
Dim nfichier As String, nfichier2 As String, intpos As Byte
nfichier = DocName 
'trouve la position de l'extension
intpos = InStrRev(nfichier, ".")
'remplace l'extension doc par pdf
nfichier = Left(nfichier, intpos - 1)
nfichier2 = nfichier & ".pdf"
'enregistre dans le dossier en cours
ActiveDocument.ExportAsFixedFormat outputFileName:=chemin & nfichier2, _
exportFormat:=wdExportFormatPDF
End Sub


0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 10:21
salut

ca ne fonctionne pas... la première bloque au bout a la fin et la deuxième me mets un message d'erreur "propriété ou méthode non gérée par cet objet"
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 10:23
salut

ca ne fonctionne pas... la première bloque au bout a la fin et la deuxième me mets un message d'erreur "propriété ou méthode non gérée par cet objet"
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 10:23
salut

ca ne fonctionne pas... la première bloque au bout a la fin et la deuxième me mets un message d'erreur "propriété ou méthode non gérée par cet objet"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
7 déc. 2015 à 10:45
Tu mets:

J'ai trouvé une macro que j'ai mis dans word,

Ta macro est bien dans un document Word?

ensuite quel Office as-tu?
Parce que ce n'est valable qu'à partir de Office 2007.
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 11:04
j'ai bien mis ma macro dans word. La dernière que tu m'as donné. La première impaccable. La deuxième verspdf() c'ets celle-la qui bug...
j'ai word 2003. ah ok .... :( mince alors y a pas de solution si je comprend bien ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
7 déc. 2015 à 11:18
Tout n'est pas perdu, essaie d'après ce site, je vois de mon coté ce que je peux faire:

https://heureuxoli.developpez.com/office/word/doc2pdf/
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 11:26
Les codes sont intérréssant mais je ne sais pas refaire la macro pour parler d'enregistrement ... j'ai pdf creator sur le pc mais je ne sais pas ré écrire les macro...
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 11:30
réctification j'ai pas tout le logiciel ... juste une partie je peux meme pas lancer vba sur creator
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
7 déc. 2015 à 12:54
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 13:31
je peux pas c'est le pc du boulot.... sinon j'ai acrobat reader xi... je sais pas si c'est mieux ou pas pour pdf et macro....
0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 13:44
.SaveAs "S:\_Restauration\Cuisines centrales\MEMOIRES\Memoires 2015-2016\CC BONDY\2015-5\2015-5 mémoires individuels.pdf\" & DocName & ".pdf"
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
7 déc. 2015 à 11:36
D'abord il faut allez dans le ruban de l'éditeur, dans Outils, Référence et cochez PDFCreator. Il faut que tu cherches le chemin de PDFCreator sur ton PC. Moi je suis sous Windows 10, le tien est peut-être différent. si c'est le cas tu le changes!

Voilà le code, tu l'essaies tel que, on verra après pour l'adapter à ta macro:

Option Explicit
Dim chemin As String
Private Sub CommandButton2_Click()
chemin = ThisDocument.Path & "\"
With ActiveDocument
.SaveAs chemin & ActiveDocument.Name
End With
testPrintPDF
MsgBox "PDF enregistré"
End Sub
Sub testPrintPDF()
Dim oldPrinter As String
Dim stChemin As String
Dim stNom As String
' Affichage de la fenêtre de PDF
Shell "C:\Program Files (x86)\PDFCreator\PDFCreator.exe", vbNormalFocus 'a adapter le chemin de ton pc

Dim PDFCreator1 As New clsPDFCreator
oldPrinter = ActivePrinter
'On va mettre en mémoire dans une
'variable le nom de l'imprimante par défaut
ActivePrinter = "PDFCreator"
'Mettre comme imprimante par défaut PDFCreator
If Len(ActiveDocument.Path) = 0 Then
    stChemin = chemin '"c:\temp"
Else
    stChemin = chemin 'ActiveDocument.Path
End If
'Si le document n'a pas été sauvegardé, le PDF sera dans le répertoire c:\temp
'et un nom par défaut documentPDF;pdf
If Len(ActiveDocument.Name) = 0 Then
    stNom = "documentPDF.pdf"
Else
    stNom = ActiveDocument.Name
End If
'les option PDFCreator
With PDFCreator1
   .cOption("UseAutosave") = 1
   .cOption("UseAutosaveDirectory") = 1
   .cOption("AutosaveDirectory") = stChemin
   .cOption("AutosaveFilename") = stNom
   .cOption("AutosaveFormat") = 0                            ' 0 = PDF
   .cStart
   .cClearCache
End With
ActiveDocument.PrintOut Background:=True
PDFCreator1.cClose
ActivePrinter = oldPrinter
' Change l'imprimante par défaut

End Sub

0
en2mots Messages postés 166 Date d'inscription samedi 31 mai 2008 Statut Membre Dernière intervention 23 octobre 2016
7 déc. 2015 à 12:27
ca me met erreur de compilation en surlignant ça :

PDFCreator1 As New clsPDFCreator
0