Publipostage avec word

Publipostage avec word

Messagepar Michael DELIQUE » 02 Oct 2009 à 06:59

[quote="Stephane MAILLARD"Le code détache le modèle, ouvre Word, remplace les valeurs des signets et envoi ou pas le document Word :

Surtout ne pas oublier le Sleep c'est le temps nécessaire à Notes pour enregistrer le document dans le Mémo.

Autrement risque du gros message ROUGE[/quote]


Code : Tout sélectionner
Option Public
Option Declare

Dim db As NotesDatabase
Dim collection As NotesDocumentCollection, coll_Offres As NotesDocumentCollection
Dim int_nbre_candidats As Integer, k As Integer
Dim doc As NotesDocument, doc_Offre As NotesDocument, doc_Resp As NotesDocument
Dim doc_Mail As NotesDocument, doc_Modele As NotesDocument, doc_Courrier As NotesDocument, doc_Param As NotesDocument
Dim vw_Modele As NotesView, vw_Courriers As NotesView, vw_Parametres As NotesView
Dim vw_Candidats As NotesView
Dim str_Qui As String, str_ID_Qui As String, str_Mail As String, str_CP As String, str_Ville As String, str_Mail_Param As String
Dim str_Civil As String, str_Adresse As String, str_CP_Ville As String, str_Champ As String, str_Nom As String, str_Prenom As String
Dim dateTime As NotesDateTime
Dim scheditem As NotesItem, Options_Item As NotesItem, Date_Item As NotesItem
Dim rtitem As NotesRichTextItem
Dim Excel_Page As NotesEmbeddedObject
Dim uidoc As NotesUIDocument
Dim str_Signataire_RH As String, str_Titre_RH As String, str_IDs As String
Dim var_IDs As Variant
Dim doc_Corps_Mail_1 As NotesDocument, doc_Corps_Mail_2 As NotesDocument, doc_Corps_Mail_3 As NotesDocument, doc_Corps_Mail_4 As NotesDocument, doc_Corps_Mail_5 As NotesDocument
Dim str_Mail_Corp_1 As String, str_Mail_Corp_2 As String, str_Mail_Corp_3 As String, str_Mail_Corp_4 As String, str_Mail_Corp_5 As String

Sub Initialize
   Dim s As New NotesSession
   Dim w As New NotesUIWorkspace
   Set db = s.CurrentDatabase
   Set vw_Modele = db.GetView("va_Modeles")
   Set doc_Modele = vw_Modele.GetDocumentByKey("NEG_CONTRAT_QUAL",True)
   Set vw_Courriers = db.GetView("va_CourriersParIDOffreCandidat")
   Set vw_Candidats = db.GetView("va_CandidatsIDs")
   
   Set uidoc = w.CurrentDocument
   str_Signataire_RH = uidoc.FieldGetText("fld_Qui")
   str_Titre_RH = uidoc.FieldGetText("fld_Fonction")
   str_IDs = uidoc.FieldGetText("fld_IDs")
   var_IDs = Evaluate("@Explode(""" + str_IDs + """;""; "")")
   For k = 0 To Ubound(var_IDs)
      Set doc = vw_Candidats.GetDocumentByKey(Cstr(var_IDs(k)), True)
      If Not doc Is Nothing Then
         str_Civil = doc.fld_Civilite(0)
         str_Nom = doc.fld_Nom(0)
         str_Prenom = doc.fld_Prenom(0)
         str_Adresse = doc.fld_Adresse(0)
         str_CP = doc.fld_CodePostal(0)
         str_Ville = doc.fld_Ville(0)
         str_CP_Ville = str_CP & " " & str_Ville
         str_Qui =  str_Civil & " " & str_Nom & " " & str_Prenom
         If doc.fld_CandidatureProv01(0) = "9" Then
            doc.fld_CandidatureRep01= "2"
            doc.fld_CandidatureTrai01 = "1"
         Elseif doc.fld_CandidatureProv02(0) = "9" Then
            doc.fld_CandidatureRep02= "2"
            doc.fld_CandidatureTrai02 = "1"
         Elseif doc.fld_CandidatureProv03(0) = "9" Then
            doc.fld_CandidatureRep03= "2"
            doc.fld_CandidatureTrai03 = "1"
         Elseif doc.fld_CandidatureProv04(0) = "9" Then
            doc.fld_CandidatureRep04= "2"
            doc.fld_CandidatureTrai04 = "1"
         Elseif doc.fld_CandidatureProv05(0) = "9" Then
            doc.fld_CandidatureRep05= "2"
            doc.fld_CandidatureTrai05 = "1"
         Else
            Msgbox "Le candidat " & doc.fld_Nom(0) & " " & doc.fld_Prenom(0) & " n'a pas fait de demande de contrat de qualification"
            Goto SUIVANT
         End If
         str_ID_Qui = doc.fld_ID_Candidat(0)
         str_Mail = doc.fld_Mail(0)
         If str_Mail = "" Then
            Msgbox "Le candidat " & str_Qui & " n'a pas d'e-mail. Impression de la Réponse."
            Call ImprimerResponse (doc, str_Qui, str_ID_Qui)
         Else
            Call CreateResponse (doc, str_Qui, str_ID_Qui)
            Call GenererMailerWord (doc_Modele)
            Msgbox "Un mail de réponse à été envoyé au candidat " & str_Qui & "."
         End If
         Call doc.Save(True,True)         
      End If
   Next
SUIVANT:
   Call uidoc.Close
End Sub

Sub GenererMailerWord(doc_Modele As NotesDocument)
   Dim wordApp As Variant, wordDoc As Variant, wordDocs As Variant
   Dim object As NotesEmbeddedObject
   
   Set vw_Parametres = db.GetView("va_Tables")
   Set doc_Param = vw_Parametres.GetDocumentByKey("MAIL", True)
   str_Mail_Param = doc_Param.fld_Value(0)
   Set doc_Corps_Mail_1 = vw_Parametres.GetDocumentByKey("CORP_MAIL_1", True)
   str_Mail_Corp_1 = doc_Corps_Mail_1.fld_Value(0)
   Set doc_Corps_Mail_2 = vw_Parametres.GetDocumentByKey("CORP_MAIL_2", True)
   str_Mail_Corp_2 = doc_Corps_Mail_2.fld_Value(0)
   Set doc_Corps_Mail_3 = vw_Parametres.GetDocumentByKey("CORP_MAIL_3", True)
   str_Mail_Corp_3 = doc_Corps_Mail_3.fld_Value(0)
   Set doc_Corps_Mail_4 = vw_Parametres.GetDocumentByKey("CORP_MAIL_4", True)
   str_Mail_Corp_4 = doc_Corps_Mail_4.fld_Value(0)
   Set doc_Corps_Mail_5 = vw_Parametres.GetDocumentByKey("CORP_MAIL_1_bis", True)
   str_Mail_Corp_5 = doc_Corps_Mail_5.fld_Value(0)
   
   Set wordApp = CreateObject( "Word.Application" )
   wordApp.Visible = False
   Set wordDocs = wordApp.Documents
   
   Set Excel_Page = doc_Modele.GetAttachment( "Modele.dot" )
   Call Excel_Page.ExtractFile("C:\Modele.dot")
   
   Call wordDocs.Add( "C:\Modele.dot", False )
   Set wordDoc = wordDocs(1)
   wordDoc.Activate
   wordDoc.Bookmarks( "ADRESSE" ).Range.text = str_Adresse
   wordDoc.Bookmarks( "DATE" ).Range.text = Cstr(Date$)
   wordDoc.Bookmarks( "CIV" ).Range.text = str_Civil
   wordDoc.Bookmarks( "VILLE" ).Range.text = str_Ville
   wordDoc.Bookmarks( "CP" ).Range.text = str_CP
   wordDoc.Bookmarks( "NOM" ).Range.text = str_Nom
   wordDoc.Bookmarks( "PRENOM" ).Range.text = str_Prenom
   wordDoc.Bookmarks( "TITRE" ).Range.text = str_Civil
   wordDoc.Bookmarks( "TITRE_END" ).Range.text = str_Civil
   wordDoc.Bookmarks( "RRH" ).Range.text = str_Signataire_RH
   wordDoc.Bookmarks( "TITRE_RH" ).Range.text = str_Titre_RH
   wordDoc.SaveAs "C:\Rep.doc"
   Call wordApp.Quit
   Set WordApp = Nothing
   
   Set doc_Mail = db.CreateDocument
   doc_Mail.Form = "Memo"
   doc_Mail.Subject = "Courrier candidature"
   doc_Mail.ReturnReceipt = "1"
   Set rtitem = New NotesRichTextItem( doc_Mail, "Body" )     
   Call rtitem.AppendText( str_Civil )
   Call rtitem.AddNewLine(2)
   Call rtitem.AppendText( str_Mail_Corp_1 )
   Call rtitem.AddNewLine(2)
   If str_Mail_Corp_5 <> "" Then
      Call rtitem.AppendText( str_Mail_Corp_5 )
      Call rtitem.AddNewLine(2)
   End If
   Call rtitem.AppendText( str_Mail_Corp_2 )
   Call rtitem.AddNewLine(1)
   Call rtitem.AppendText( str_Mail_Corp_3 )
   Call rtitem.AddNewLine(1)
   Call rtitem.AppendText( str_Mail_Corp_4 )
   Call rtitem.AddNewLine(3)
   Set object = rtitem.EmbedObject ( EMBED_ATTACHMENT, "", "C:\Rep.doc")
   If str_Mail_Param = "0" Then
      Call doc_Mail.Save(True, True)
   Elseif str_Mail_Param = "1" Then
      Call doc_Mail.Send( False, str_Mail )
   End If
   Sleep(3)
   Kill "C:\Modele.dot"
   Kill "C:\Rep.doc"
End Sub

Sub CreateResponse (doc As NotesDocument, str_Qui As String, str_ID_Qui As String)
   Dim w As New NotesUIWorkspace
   Set doc_Resp = db.CreateDocument
   doc_Resp.Form = "fa_Courrier_NR_CONTRAT_QUAL"
   doc_Resp.fld_Candidat = str_Civil
   doc_Resp.fld_Candidat1 = str_Civil
   doc_Resp.fld_ID_Candidat = str_ID_Qui
   doc_Resp.fld_CIV = str_Qui
   doc_Resp.fld_Adresse = str_Adresse
   doc_Resp.fld_CP_Ville = str_CP_Ville
   doc_Resp.fld_Titre_RH = str_Titre_RH
   doc_Resp.fld_RRH = str_Signataire_RH
   
   Set dateTime = New NotesDateTime(Date$)
   Set scheditem = doc_Resp.ReplaceItemValue("fld_DateJour", dateTime)
   Set date_item = doc_Resp.ReplaceItemValue("fld_Date", dateTime)
   Call doc_Resp.Save( True, True )
End Sub

Sub ImprimerResponse (doc As NotesDocument, str_Qui As String, str_ID_Qui As String)
   Dim w As New NotesUIWorkspace
   Dim uidoc_Resp As NotesUIDocument
   
   Set doc_Resp = db.CreateDocument
   doc_Resp.Form = "fa_Courrier_NR_CONTRAT_QUAL"
   doc_Resp.fld_Candidat = str_Civil
   doc_Resp.fld_Candidat1 = str_Civil
   doc_Resp.fld_ID_Candidat = str_ID_Qui
   doc_Resp.fld_CIV = str_Qui
   doc_Resp.fld_Adresse = str_Adresse
   doc_Resp.fld_CP_Ville = str_CP_Ville
   doc_Resp.fld_Titre_RH = str_Titre_RH
   doc_Resp.fld_RRH = str_Signataire_RH
   
   Set dateTime = New NotesDateTime(Date$)
   Set scheditem = doc_Resp.ReplaceItemValue("fld_DateJour", dateTime)
   Set date_item = doc_Resp.ReplaceItemValue("fld_Date", dateTime)
   Call doc_Resp.Save( True, True )
   Set uidoc_Resp = w.EditDocument( False, doc_Resp )
   Call uidoc_Resp.Print
   Call uidoc_Resp.Close
End Sub
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Michael DELIQUE » 22 Sep 2010 à 15:43

JArcher a écrit:une autre Exemple


Code : Tout sélectionner
Sub Click(Source As Button)
    Dim objWord As Variant
    Dim session As New NotesSession
    Set objWord = CreateObject("Word.Application")
    Dim objDoc As Variant
    Dim flag As Variant
   
    Dim item As NotesItem
    Dim contents As String
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument
    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.Document   
   
    Set objDoc = objWord.Documents.Add("D:\Bureau\ENREGISTREE.dot")
   
    objWord.Visible=visibility
    objWord.Visible=True   
   
    Set item = doc.GetFirstItem( "ladresse" )
    contents = item.Text
    Call objDoc.Bookmarks.Item("AdresseClient").Select()
    objWord.Selection.Text = contents
   
    objDoc.SaveAs("D:\Bureau\test2.doc")   
    objDoc.Close
    Set objDoc = Nothing
    objWord.Quit
    Set objWord = Nothing
End Sub
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy


Retour vers Importation/Exportation vers d'autres applications