Visites

   visiteurs

   visiteurs en ligne

Sujet n°71 publipostage
    par JM le 19/02/2007 : 19:11

Bonjour

Je souhaite editer des etats en passant par word et comme vous l'avez deja dit je suis alle " chez raymond pour prendre le code du publipostage"

J'ai donc mi ce code sous le click d'un bouton

Mon probleme est un message d'erreur sur la 3eme ligne

 W_App As New Wors.Application 

me disant  "Erreur de Compilation"   "type defini par l'utilisation non defini"

Ci joint le code

Merci d'avance pour votre aide

Private Sub Commande55_Click()
    On Error Resume Next ' a modifier selon besoin
    Dim W_App As New Word.Application
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim Strsql As String
    Set Db = CurrentDb
    Strsql = "SELECT Clients.Client_N°, Clients.Client_Nom, Clients.Client_Rue, "
    Strsql = Strsql & "Clients.Client_Ville, Clients.Client_CodePostal, Clients.Client_Adresse, "
    Strsql = Strsql & "Clients.Client_Suivi_Mensuel "
    Strsql = Strsql & " FROM Clients "
    Strsql = Strsql & " WHERE (((Clients.Client_Suivi_Mensuel)=Yes));"
    Set Rs = Db.OpenRecordset(Strsql)
    If Rs.BOF Then GoTo Exit_Sub
    With W_App
        .Visible = True
        Do Until Rs.EOF
            .Documents.Open ("c:doc1.doc")
            .ActiveDocument.Bookmarks("nom").Select
            .Selection.InsertAfter Rs.Fields("client_nom")
            .ActiveDocument.Bookmarks("rue").Select
            .Selection.InsertAfter Rs.Fields("client_rue")
            .ActiveDocument.Bookmarks("postal").Select
            .Selection.InsertAfter Rs.Fields("client_codepostal")
            .ActiveDocument.Bookmarks("adresse").Select
            .Selection.InsertAfter Rs.Fields("client_adresse")
            .ActiveDocument.PrintOut False
            .ActiveDocument.Close wdDoNotSaveChanges
            Rs.MoveNext
            DoEvents
        Loop
    End With
Exit_Sub:
    Rs.Close
    Set Rs = Nothing
    Set Db = Nothing
    W_App.Quit
    Set W_App = Nothing

End Sub


Réponse n° 1 par 3stone le 19/02/2007 : 20:44
Bonjour,

Regarde dans tes références (ALT + F11) Outils, Références et coches la référence "Microsoft DAO 3.6 Object Library"

PS:
On édite pas un état dans Word...
Soit on fait un "mailing, soit on utilise l'automation. C'est ce que tu cherche à faire ici wink

A+
Pierre

Réponse n° 2 par JMR le 20/02/2007 : 18:56

Bonjour et merci

Oui tout d'abort je souhaite exporter sous word quelques champs qui vont sintegrer dans une lettre type;Ces champs dans le texte word seront notifié  "nom"

Bizarrement la reference "Microsoft DAO 3.6 Objet library" etait deja cocher alors au pif j'ai cocher la reference"Microsoft word 11.0 Objet library" et la je n'ai plus d'erreur Mais par contre rien ne se passe quand j'appui sur mon bouton

Mon formulaire s'appelle "bien" et mon champ que je veux exporte de ce formulaire est "gessci" Mon dossier Word est dans C:\doc1 Et l'emplacement dans mon texte sous word est "nom"

Donc j'ai adapté le code comme suit, mais j'ai certainement ommis quelque chose

Merci

Private Sub Commande55_Click()
    On Error Resume Next ' a modifier selon besoin
    Dim W_App As New Word.Application
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim Strsql As String
    Set Db = CurrentDb
    Strsql = "SELECT bien.gessci, "
    
    Set Rs = Db.OpenRecordset(Strsql)
    If Rs.BOF Then GoTo Exit_Sub
    With W_App
        .Visible = True
        Do Until Rs.EOF
            .Documents.Open ("c:\doc1")
            .ActiveDocument.Bookmarks("nom").Select
            .Selection.InsertAfter Rs.Fields("gessci")
          
            .ActiveDocument.PrintOut False
            .ActiveDocument.Close wdDoNotSaveChanges
            Rs.MoveNext
            DoEvents
        Loop
    End With
Exit_Sub:
    Rs.Close
    Set Rs = Nothing
    Set Db = Nothing
    W_App.Quit
    Set W_App = Nothing

End Sub

Réponse n° 3 par 3stone le 20/02/2007 : 19:16
Salut,

Ah oui... la troisième ligne (y compris le Sub wink

Si tu commente (') momentanément le "On resume next" pour voir l'erreur que tu as ?

Il faudrait aussi placer un point d'arrêt, en debut de sub, et exécuter ton code pas à pas. Cela te permettra de "voir" la valeur des variables et autre déroulement.

Pierre

Réponse n° 4 par JMR le 21/02/2007 : 14:14

salut et merci pour ta rapidité

Mais peu tu etre plus précis car je suis novice

de plus peux tu me confirmer si le nom de mon formulaire "bien" et champ "gessci" son placés au bon endroit dans le code vba ci avant

car je ne suis obsolument pas sur de mon cou

Merci pour ton debroussaillage

Réponse n° 5 par 3stone le 21/02/2007 : 18:26
Salut,

Un point d'arrêt se crée dans le code VBA en cliquant sur la bordure grise à gauche.
Il y apparait un point brun...

Lorsque tu exécutera le code, Access affichera automatique la ligne de code qu'il est en train d'exécuter.
Par la touche F8 tu avancera... d'un "pas" - d'où le non d'exécusion "pas à pas".

Le reste semble ok.

A+
Pierre

[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut