Problème avec VB et Access&Word

Steph77ch Messages postés 4 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 16 mai 2003 - 9 mai 2003 à 14:56
Steph77ch Messages postés 4 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 16 mai 2003 - 16 mai 2003 à 15:58
Salut a tous

Voici mon problème :
J'ai une base de données gestion.mdb avec plusieurs tables. Avec cette base je doit prendre les informations contenues dans la table Membre et utiliser ces informations pour faire un publipostage avec Word.
Et je dois faire tous cela depuis VB et je sais pas du tout ce qu'il faut faire pour cela.

Si quelqu'un a un solution merci d'avance

Steph

4 réponses

cs_xtof Messages postés 48 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 13 décembre 2007
9 mai 2003 à 19:25
Salut,

Il faut commencer par :

- Créer et tester un fichier de fusion avec Word
- Extraire les champs de la table MEMBRE et ensuite les enregistrer dans un fichier .txt (ou .cequetuvoudras).

Dans ce fichier, tu devras indiquer en première ligne les noms de champs qui correspondent au document de fusion :

Nom;Prenom;adresse;codepostal;ville;pays
Durand;Jacques;12, allée des Marguerittes;78000 Versailles;France
Dupont;Jeanine;7 rue Charles de Gaulle;93300;Vincennes


- Et après tu fais un copier/coller de la fonction suivante :


Function WinWord(FichierModele, Donnee, Optional SendByMail = False) As Integer
        
    On Error Resume Next

    Dim wPath, X, wData, wDefault, wMailMerge
    Dim wObject As Object
    
    Const wdOpenFormatAuto = 0
    Const wdFormLetters = 0
    Const wdDefaultFirstRecord = 1
    Const wdDefaultLastRecord = -16
    Const wdSendToPrinter = 1
    Const wdSendToEmail = 2
       
    wDefault = App.Path & ""

    On Error GoTo ErreurWORD
           
    Set wObject = CreateObject("Word.Application")
    
    wObject.Visible = True
    
    wObject.ChangeFileOpenDirectory wDefault
       
    wObject.Documents.Open FileName:="" & FichierModele & "", ConfirmConversions:=False, ReadOnly:= _
        False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
        "", Revert:=True, WritePasswordDocument:="", WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto

    Set wMailMerge = wObject.ActiveDocument.MailMerge
    
    wMailMerge.OpenDataSource Name:= _
        "" & Donnee & "", _
        ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
        AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
        WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
        Format:=wdOpenFormatAuto, Connection:="", SQLStatement:="", SQLStatement1 _
        :=""
    
    If SendByMail = False Then
        
        With wMailMerge
            .Destination = wdSendToPrinter
            .MailAsAttachment = False
            .MailAddressFieldName = ""
            .MailSubject = ""
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            .Execute
        End With
    
    Else
        
        With wMailMerge
            .Destination = wdSendToEmail
            .MailAsAttachment = True
            .MailAddressFieldName = "To"
            .MailSubject = "Vous avez un courrier courrier !!!"
            .SuppressBlankLines = True
            With .DataSource
                .FirstRecord = wdDefaultFirstRecord
                .LastRecord = wdDefaultLastRecord
            End With
            .Execute
        End With
    
    End If
    wObject.ActiveDocument.Save
    wObject.ActiveDocument.Close
    wObject.Application.Quit
     
    Set wMailMerge = Nothing
    Set wObject = Nothing
    
    WinWord = True
    Exit Function

ErreurWORD:
    On Error Resume Next
    MsgBox Err.description
     WinWord = False
    Exit Function
End Function 



N’oublies pas d’ajouter la référence Word 10 (ou Word 9) à ton projet.

Voilà,

++

[ XtOf ]

[ XtOf ]
0
Steph77ch Messages postés 4 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 16 mai 2003
15 mai 2003 à 14:31
Déjà je te remercie de m'avoir répondu.
Le problème est que je doit créer le fichier de fusion depuis VB. Ca j'arrive c'est bon. Le problème c'est quand je fait wMailMerge.execute il me marque que le document principale ne contient pas de champs à fusionner. Pourtant si j'enlève cette ligne et que j'ouvre le fichier Word je peut voir tous les noms des champs pres a fusionner.

En attente de ta réponse

Stéph
0
cs_xtof Messages postés 48 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 13 décembre 2007
15 mai 2003 à 18:04
Salut,

C'est parce que ton .doc n'est pas bien formaté...

Est-ce qu'il fonctionne quand tu fais une fusion manuellement ?

Le mieux est de créer ton fichier, puis de le tester manuellement avec Word et ensuite tu utilise ton programme si tout est OK.

++

[ XtOf ]
0
Steph77ch Messages postés 4 Date d'inscription jeudi 13 mars 2003 Statut Membre Dernière intervention 16 mai 2003
16 mai 2003 à 15:58
Hello
La fusion fonctionne parfaitement manuellement.
En fait tout fonctionne sauf quand j'utilise la commande .execute
Si je fait tout manuellement il fait tous ok. Et quand je créer les champs avec VB et qu'après je fait fusionner manuellement depuis Word ça marche aussi.
C'est juste ce .execute qui fait tout bugger et je trouve pas pourquoi.

Y-a-il un autre moyen de formater le document Word ?
Car si c'est ça il faudrai trouver une autre façon de faire

Stéph
0
Rejoignez-nous