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 :

vba et publipostage


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    auditeur
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut vba et publipostage
    bonsoir
    pour enregistrer des fichiers suite a publipostage j'utilise la macro d'Heureux oli dans le tuto "fusion et publi par l'interface et vba"
    ci dessous :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Sub Publiposttotrap()
    ' Déclaration des variables
    Dim iR As Integer
    Dim i As Integer
    Dim oDoc As Document: Dim numcaisses As Variant: Dim nomcaisse As Variant
    Dim DocName As String
    Dim oDS As MailMergeDataSource
    
    ' Affectation des objets
    Set oDoc = ActiveDocument
    Set oDS = oDoc.MailMerge.DataSource
    
    Dim Rep As Integer ' boite d'alerte vous allez ecraser tous les fichiers
        
        Rep = MsgBox("Voulez-vous continuez ? vous allez écraser les précédents documents", vbYesNo + vbQuestion, "mDF XLpages.com")
        If Rep = vbYes Then
             
            iR = oDoc.MailMerge.DataSource.RecordCount
            Debug.Print iR
            
            For i = 1 To iR
                With oDoc.MailMerge
                    'Définition du premier et dernier enregistrement
                    .DataSource.FirstRecord = i
                    .DataSource.LastRecord = i
                    
                    ' Envoi des données dans un nouveau document
                    '.Destination = wdSendToNewDocument
                    ' Exécution du publipostage
                    .Execute
                    
                    ' Actualisation de l'enregistrement pour la sauvegarde
                    .DataSource.ActiveRecord = i
                    'Utilisation d'un  champs pour obtenir le nom du document, 2 champs pour le chemin
                    DocName = .DataSource.DataFields(1).Value
                    numcaisse = .DataSource.DataFields(1).Value
                    nomcaisse = .DataSource.DataFields(2).Value
                    dossier = "D:\cbi 2019\" & numcaisse & " " & nomcaisse & "\00 Rapports"
                    Debug.Print DocName; i
                End With
                
                ' Sauvegarde du document publiposté
                   ChangeFileOpenDirectory "D:\cbi 2019\" & numcaisse & " " & nomcaisse & "\00 Rapports\"
                    With ActiveDocument
                         .SaveAs FileName:= _
                            numcaisse & " Certification des Comptes 2018.doc", FileFormat:= _
                             wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
                            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
                             False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
                            SaveAsAOCELetter:=False
                      .Close
                     End With
                    
            Next i
     Else
         End
     End If
    
    End Sub
    dans cette macro, le nouveau fichier .doc enregistré ne conserve pas le lien avec la base de donnée de publipostage
    de plus les macros du fichier d'origine logées dans des modules ne sont plus visibles/utilisables dans les fichiers copiés

    auriez vous une solution pour pouvoir enregistrer les macros ( ou changer l'extension du .doc) et aussi garder le lien avec la base de données servant au publipostage ?

    en vous remerciant
    Xs

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par xavier vba Voir le message
    auriez vous une solution pour pouvoir enregistrer les macros ( ou changer l'extension du .doc) ?
    Bonjour,

    L'aide en ligne de Word vous donne les formats de fichier possibles. Tapez wdFormatDocument.

    En ce qui concerne les macros, essayez de :
    • Modifier l'extension en .doc en .docm
    • Remplacer wdFormatDocument par wdFormatXMLDocumentMacroEnabled


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                   With ActiveDocument
                         .SaveAs FileName:= _
                            numcaisse & " Certification des Comptes 2018.doc", FileFormat:= _
                             wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
                            True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
                             False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
                            SaveAsAOCELetter:=False
                      .Close
                     End With

    auriez vous une solution pour garder le lien avec la base de données servant au publipostage ?
    C'est votre document de publipostage. Pour ma part, je placerais ce document avec sa base de données dans le répertoire racine de l'exercice où vous stockez vos documents de publipostage.

    Sinon, regardez cette discussion pour voir si la méthode proposée peut s'adapter à votre cas : publipostage-multi-champs

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    auditeur
    Inscrit en
    Août 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : auditeur
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut essai
    c'est bon pour les macros, je les récupèrent dans les fichiers enregistrés
    par contre sur les fichiers enregistrés, je n'ai toujours pas de lien avec la base de données
    des idées ???
    merci

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Ce n'est pas le but d'un document de publipostage de conserver des liens avec la source de données. Cela se fait dans le modèle du document. L'idée c'est de mettre les informations dans le document. Et puis, si dans le document final, tu as encore des macros, c'est que tu t'y prends mal.

    Si tu te fais un document-modèle, tu conserves tes liens avec la source dans le modèle, mais pas dans le courrier individuel. Ou bien le publipostage n'est pas l'outil approprié pour ce que tu veux faire.

    Si tu veux conserver un lien entre un document spécifique et une source de données, tu peux insérer des champs (au sen Word du terme) de base de données dans le document. Quant à savoir si tu peux garder un seul enregistrement par document, je n'ai jamais essayé.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par xavier vba Voir le message
    Pour compléter la réponse de Clément quant à un outil plus adapté, une solution consisterait à réaliser votre publipostage directement depuis Excel, en utilisant un onglet en guise de formulaire. C'est ce que je fais pour mes devis et factures.

Discussions similaires

  1. création du code vba de publipostage vers word
    Par marrek209 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/11/2009, 13h01
  2. [VBA DAO] publipostage
    Par seba_stien dans le forum VBA Access
    Réponses: 0
    Dernier message: 27/03/2008, 16h34
  3. Réponses: 2
    Dernier message: 07/06/2006, 10h50
  4. [VBA-A]Publipostage: Choix de la source de donnée
    Par sabes dans le forum VBA Access
    Réponses: 3
    Dernier message: 30/05/2006, 21h36
  5. [VBA-W]publipostage word
    Par nagdrir dans le forum VBA Word
    Réponses: 12
    Dernier message: 30/04/2006, 15h05

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