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

Microsoft Office Discussion :

Publipostage Word en PDF automatique avec base de données Excel


Sujet :

Microsoft Office

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Publipostage Word en PDF automatique avec base de données Excel
    Bonjour,

    J'ai un publipostage Word avec une base de données Excel.

    Le but est de générer autant de fichier PDF par page Word (en gros 500 pages de publipo à générer en 500 fichiers PDF).

    Ensuite, j'envoi par mail à chaque destinataire un fichier PDF.

    J'ai repris le code VBA :

    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
    Sub ExportPDF()
     
    Dim NbPage As Integer
    Application.ScreenUpdating = False
     
    NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count 'Compte le nombre de page dans le document
     
    'Dans cette section, modifier le paramètre "OutputFileName" pour changer le répertoire de sortie.
    'Il est important de laisser la variable I dans le nom du fichier pour garder un numéro de chrono.
    For i = 1 To NbPage
     
    ActiveDocument.ExportAsFixedFormat OutputFileName:= _
    "C:\Users\xxx\Desktop\Publipostage\03122015\test\" & i & ".pdf", ExportFormat:= _
    wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
    wdExportOptimizeForPrint, Range:=wdExportFromTo, From:=i, To:=i, Item:= _
    wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
    Next
     
    Application.ScreenUpdating = True
     
    MsgBox "Export terminé"
     
    End Sub
    Cela fonctionne à merveille.

    Seulement, il ressort 1.pdf, 2.pdf, etc.... dans le répertoire ciblé

    Difficile de retrouver ses petits pour les envois PDF en PJ !

    L'idée est d'intégrer à la place des chiffres le n°contrat + Nom du client (qu'on retrouve dans la base Excel)

    Quelqu'un aurait une idée ?

    Sinon, je pensais rajouter les champ "n°contrat et "Nom du client" en bas de page et intégrer dans ma macro un code qui va récupérer ses données et nommer le fichier pdf !

    Qu'en pensez-vous ? Cela fait plusieurs jours que je suis dessus et j'ai senti avec des cheveux blancs, maintenant je commence à devenir chauve !!!

    Merci d'avance !

    Klimero

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Kiki,

    Pardon, je viens de le baliser (en effet, c'est plus joli comme ça !)

    Je suis allé voir tes liens. Mais hélas je n'ai pas trouvé ce que je cherche...

    Je pense que je dois modifier quelques codes dans mon VBA, et en particulier à la place de et modifier par "pied de page : n°contrat + nom société"
    Mais en langage VBA, je ne sais pas du tout comment faire... (je débute...)

    La galère !

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, il y a aussi ceci : à adapter à ton contexte Word

    Lire et écrire dans les classeurs Excel fermés
    Se connecter aux classeurs Excel2007 xlsx et xlsm et recherche dans classeur

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Kiki,

    J'ai essayé les codes VBA dont tu m'as transmis le lien.... Grrrr.... Tous mes codes sont reconnus "erreur de compilation" ou "erreur syntaxe"... Chouette... !!!

    Je me demandais si je peux demander à Word de prendre les 2 premiers mots de mon en-tête de page c'est-à-dire "N°contrat Nom Societe".
    Le code serait un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 1 To SelectDocument.Words(2).Select
    Qu'en penses-tu ?

    Je commence à sécher et à devenir chauve à force de me tirer les cheveux !

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, un embryon, à toi de l'adapter à tes données et ta boucle.
    Place ce code dans Word et un module standard, il permet la lecture d'un fichier Excel sans l'ouvrir.

    Multi post sur x forums inutile, cela n'encourage guère à t'aider.
    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
    Option Explicit
     
    Sub Tst()
    Dim xlApp As Object
    Dim sDossier As String
    Dim sFichier As String
    Dim sFeuille As String
    Dim sCell As String
    Dim sStrNom As String
    Dim sStrNum As String
     
        Set xlApp = CreateObject("Excel.Application")
     
        sDossier = "C:\Faq\Faq VBA\Exemples\Word\Essais Word Excel\"
        sFichier = "Test.xls"
        sFeuille = "Feuil1"
     
        sCell = "R17C2"
        sStrNom = xlApp.ExecuteExcel4Macro("'" & sDossier & "[" & sFichier & "]" & sFeuille & "'!" & sCell)
        sCell = "R17C3"
        sStrNum = xlApp.ExecuteExcel4Macro("'" & sDossier & "[" & sFichier & "]" & sFeuille & "'!" & sCell)
     
        MsgBox sStrNom & vbTab & sStrNum
     
        Set xlApp = Nothing
    End Sub
    Images attachées Images attachées   

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Décembre 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Décembre 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci Kiki,

    Comme je le disais, ma macro est sur Word et non sur Excel.

    Par contre, je la conserve au cas où !

    Ceci dit, je continue mes investigations.

    J'ai trouvé un bout de code que j'ai inséré :

    Bon, j'ai réussi à travailler un peu sur le code... J'ai trouvé un bout du problème.

    Mais il me créé la dernière page de mon fichier qui fait 500 pages et le nom du pdf se nomme le 1er mot de la 1ère page...

    Voilà le code :

    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
    Sub ExportPDF()
        Dim NbPage As Integer
        Application.ScreenUpdating = False
        NbPage = ActiveDocument.Windows(1).Panes(1).Pages.Count
        nom = ActiveDocument.Paragraphs(1).Range.Words(1)
        For i = 1 To NbPage
        ActiveDocument.ExportAsFixedFormat OutputFileName:= _
        "C:\Users\xxx\Desktop\pj\" & nom & ".pdf", ExportFormat:= _
        wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
        wdExportOptimizeForPrint, Range:=wdExportFromTo, From:=i, To:=i, Item:= _
        wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
        CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
        BitmapMissingFonts:=True, UseISO19005_1:=False
        Next
        Application.ScreenUpdating = True
        MsgBox "Export terminé"
        End Sub
    Je sais que je vais devoir reproduire 3000 fois ce code (pour un publipo qui fera 3000 pages maxi).

    Je pense devoir modifier un chiffre qui correspondra à la page suivante.
    et j'imagine que la réponse est dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nom = ActiveDocument.Paragraphs(1).Range.Words(1)
    Comment dire à Word de prendre le 1er mot par page et d'en faire un fichier PDF ?

    Je commence a péter un câble (et ça devient obsessionnel). J'essaie d'avancer à tatillon, mais Word me renvoi des erreurs, etc...

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, visiblement tu ne lis pas ce qui est écrit.

    Place ce code dans Word et un module standard, il permet la lecture d'un fichier Excel sans l'ouvrir.

Discussions similaires

  1. Info : Petit programme VBA avec base de donnée excel
    Par guismoman60 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/10/2013, 10h20
  2. [WD-2007] publipostage avec base de données Excel
    Par Minisucre971 dans le forum Word
    Réponses: 1
    Dernier message: 22/03/2013, 10h55
  3. Réponses: 4
    Dernier message: 14/11/2011, 16h53
  4. Publipostage Word avec base de donnée Access
    Par fry0260 dans le forum Word
    Réponses: 0
    Dernier message: 09/01/2008, 22h39
  5. Réponses: 1
    Dernier message: 22/11/2007, 08h42

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