Word : Macro conversion pdf

en2mots Messages postés 170 Statut Membre -  
en2mots Messages postés 170 Statut Membre -
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

7 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

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

    https://forums.commentcamarche.net/forum/affich-32860432-macro-word-conversion-vba
    0
    1. en2mots Messages postés 170 Statut Membre
       
      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
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      ca fonctionne pas comme je veux c'est à dire avoir les deux actions : word et pdf
      bref...
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      Bonjour,

      Je vais essayer et je te tiens au courant. Merci
      0
    2. en2mots Messages postés 170 Statut Membre
       
      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
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      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
    2. en2mots Messages postés 170 Statut Membre
       
      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
    3. en2mots Messages postés 170 Statut Membre
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      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
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      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
    2. en2mots Messages postés 170 Statut Membre
       
      réctification j'ai pas tout le logiciel ... juste une partie je peux meme pas lancer vba sur creator
      0
    3. en2mots Messages postés 170 Statut Membre
       
      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
    4. en2mots Messages postés 170 Statut Membre
       
      .SaveAs "S:\_Restauration\Cuisines centrales\MEMOIRES\Memoires 2015-2016\CC BONDY\2015-5\2015-5 mémoires individuels.pdf\" & DocName & ".pdf"
      0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. en2mots Messages postés 170 Statut Membre
       
      ca me met erreur de compilation en surlignant ça :

      PDFCreator1 As New clsPDFCreator
      0