IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Publipostage et enregistrement de chaque document en word


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Chargé d'études RH
    Inscrit en
    Octobre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Publipostage et enregistrement de chaque document en word
    Bonjour à tous,

    A partir d'une macro VBA, j'ai pu créé à partir d'un document de publipostage Word autant de document .pdf que j'avais d'enregistrements.

    Voici cette macro qui marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub SavePubliAsPDF()
    Dim LastRec As Integer
    Dim Path As String, Id As String, Dir As String
     
     
     
     
    Application.ScreenUpdating = False
     
    'Choix du dossier d'enregistrement des fichiers
    With Application.FileDialog(msoFileDialogFolderPicker)
    .Title = "Sélectionnez un dossier où enregistrer vos fichiers"
    .Show
    If Not (.SelectedItems.Count = 0) Then
    Path = .SelectedItems(1)
    Else
    Exit Sub
    End If
    End With
     
    'Décompte du nombre d'enregistrements dans le publipostage
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
    LastRec = ActiveDocument.MailMerge.DataSource.ActiveRecord
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
     
    'Enregistrement des fichiers
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
    For i = 1 To LastRec Step 1
    Id = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
    Dir = ActiveDocument.MailMerge.DataSource.DataFields(10).Value
    With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .DataSource.ActiveRecord = i
    ActiveDocument.SaveAs Path & "\BSI 2017_" & Dir & "_" & Id & ".pdf", wdFormatPDF
    End With
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
     
    Next i
     
    MsgBox "L'enregistrement de votre publipostage est terminé." & vbLf & vbLf & LastRec & " fichiers ont été enregistrés dans le dossier : " & Path, vbOKOnly + vbInformation, "Enregistrement du publipostage terminé"
     
    Application.ScreenUpdating = True
    End Sub
    J'ai voulu me servir de cette programmation pour créer des documents .doc (qui permet de modifier plus facilement qu'un fichier pdf).

    J'ai tenté (de manière simpliste) en changeant cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.SaveAs Path & "\BSI 2017_" & Dir & "_" & Id & ".docx", wdFormatDOC
    Sauf qu'évidemment, c'est mon document source de publipostage Word qui est enregistré pour chaque enregistrement.

    Comment faire pour que ce soit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    ce nouveau document qui soit enregistré sous un nom prédéfini par programmation (et non le Active Document qui est mon document source).

    Merci beaucoup.

    Sophie

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SagesseNaturelle Voir le message
    Bonjour,

    Regardez dans l'aide Word VBA, la méthode Document.SaveAs2.

    Je pense qu'il vous faut créer et instancier deux variables de type document : 1 pour votre document support, 1 qui sera instanciée et détruite à chaque nouveau document créé et vous permettra de clore le fichier à la fin de chaque enregistrement.

    Sinon, lorsque vous mettez du code VBA en ligne, sélectionnez les lignes collées et cliquez sur le bouton #.

Discussions similaires

  1. Enregistrement séparé de chaque document d’un publipostage en PDF
    Par cutchillo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/04/2016, 11h26
  2. [AC-2010] Erreur sur Code VBA pour enregistrement d'un document publiposté word
    Par AudREN dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/09/2014, 13h22
  3. [WD-2003] Enregistrement séparé de chaque document d’un publipostage
    Par bolide7 dans le forum Word
    Réponses: 6
    Dernier message: 06/05/2012, 02h16
  4. Réponses: 8
    Dernier message: 19/10/2006, 09h47
  5. [VBS]Script d'enregistrement d'un document Word
    Par TomZ dans le forum VBScript
    Réponses: 1
    Dernier message: 22/03/2006, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo