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

  1. #1
    Membre régulier
    Émailing via publipostage avec plusieurs destinataires (to et cc)
    Salut le fofo,

    Question existentielle du jour : rajouter un cc sur un émailing via publipostage.

    Je viens de vérifier sur différents sites de Crosoft, il n'est pas possible lorsque l'on fait un publipostage de sélectionner plusieurs destinataires par mail (et en mettre plusieurs dans un même champ séparé par des ";" ne fonctionne pas non plus).

    J'essaie de passer par une macro en VB via excel, mais je reste limité aussi quant au fait que .MailMerge ne gère qu'un .MailAddressFieldName unique ...

    Donc je regarde maintenant du côté d'outlook en vb. J'ai trouvé quelques pistes intéressantes dont celle-ci dessous mais qui ne me satisfait pas non plus :

    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 emailFromDoc()
        Dim wd As Object, editor As Object
        Dim doc As Object
        Dim oMail As Object
        Dim oApp As Object
     
        Dim iR As Integer
        Dim i As Integer
        Dim oDoc As Document
        Dim oDS As MailMergeDataSource
        Dim DocName1 As String
        Dim DocName2 As String
     
        Set oDoc = ActiveDocument
        Set oDS = oDoc.MailMerge.DataSource
        Set oApp = CreateObject("Outlook.Application")
     
        Set wd = CreateObject("Word.Application")
        Set doc = ActiveDocument
        doc.Content.Copy
        Set wd = Nothing
     
     
     
    iR = oDoc.MailMerge.DataSource.RecordCount
    Debug.Print iR
    For i = 1 To iR
     
        Set oMail = oApp.CreateItem(olMailItem)
        With oMail
     
     
             With oDoc.MailMerge
                 'Définition du premier et dernier enregistrement
                 .DataSource.FirstRecord = i
     
                 .DataSource.LastRecord = i
                ' Actualisation de l'enregistrement pour la sauvegarde
                 .DataSource.ActiveRecord = i
                  DocName1 = .DataSource.DataFields(3).Value
                  DocName2 = .DataSource.DataFields(4).Value
            End With
     
            'Ajout des destinataires
                .To = DocName1
                .CC = DocName2
                .Subject = "It's a fuckin'Test "
     
    '        .BodyFormat = olFormatRichText
            Set editor = .GetInspector.WordEditor
            editor.Content.Paste
           .Display
           .Send
     
        End With
     
    Next i
    End Sub


    la raison en est en simple, il faut pour que ce code fonctionne, que j'ouvre le .docx qui me sert à la fusion des données (par ailleurs sur un .xlsx). l'envoi multiple fonctionne, là-dessus, pas de sujet, toutefois, le document étant ouvert sur une valeur, et donc figé, je ne peux pas réellement parler de publipostage avec cette fonction.

    D'où ma question, est-il possible à partir d'outlook, de générer un émailing personnalisé (le body contient des données fusionnées, chaque émail est donc unique) à plusieurs destinataires par email ?

    Merci par avance pour le coup de main

    Pet's

  2. #2

  3. #3
    Membre régulier
    Salut Oliv,

    pardonne ma réponse tardive, j'ai été un peu happé sur d'autres sujets !

    Oui le CC varie.

  4. #4
    Expert éminent
    Salut,

    2 idées qui me viennent.

    1ère solution

    Tu créés un "groupe de contact" (liste de distribution) par ligne , ce groupe devenant le destinataire de ton mail.

    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
    Sub AddNewMember()
        'Adds a member to a new distribution list
     
        Dim objItem As Outlook.DistListItem
        Dim objRcpnt As Outlook.Recipient
     
        Set objItem = Application.CreateItem(olDistributionListItem)
        'Create recipient for distlist
        Set objRcpnt = Application.Session.CreateRecipient("Dan.Wilson@toto.fr")
        objRcpnt.Resolve
        objItem.AddMember objRcpnt
        'Add note to list and display
        objItem.DLName = "tmp 1 publipostage"
         objItem.Save
    '    objItem.Display
    End Sub



    2ème solution
    Tu indiques dans le sujet "PUBLIPOSTAGE" et dans le corps de ton mail un truc du genre

    #CC=toto@toto.fr

    qui sera intercepté par l’événement itemSend de Outlook et indiqué en destinataire.


    tu mets dans outlook dans ThisOutlookSession
    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
    Private Sub Application_ItemSend(ByVal item As Object, Cancel As Boolean)
     
     
        If Not item.Class = olMail Then GoTo fin
     
        If InStr(1, item.Subject, "PUBLIPOSTAGE", vbTextCompare) > 0 Then
            On Error Resume Next
     
            'On supprime le terme PUBLIPOSTAGE du sujet
            item.Subject = Replace(item.Subject, _
                    "PUBLIPOSTAGE", "")
     
           'on vérifie la présence d'un CC
     
    If InStr(1, item.Body, "#CC=", vbTextCompare) > 0 Then
     
    CC = Split(Split(item.Body, "#CC=", -1, vbTextCompare)(1), Chr(13))(0)
      Set objOutlookRecip = item.Recipients.add(CC)
          objOutlookRecip.Type = olCC
        objOutlookRecip.Resolve
     
    'on supprime la ligne
    If item.BodyFormat = olFormatHTML Then
    item.HTMLBody = Replace(item.HTMLBody, "#CC=" & CC, "", , , vbTextCompare)
    Else
    item.Body = Replace(item.Body, "#CC=" & CC, "", , , vbTextCompare)
    End If
     
    End If
     
            'On sauvegarde le mail
            item.Save
        End If
     
    fin:
     
    End Sub

  5. #5
    Membre régulier
    Merci pour ton retour Oliv,

    Je vais tester les deux soluces que tu proposes pour valider la plus mieux !

    Je posterai le résultat dans la journée.

    Encore merci pour ta si précieuse (habituelle) aide.

  6. #6

###raw>template_hook.ano_emploi###