Comment envoyer un mail en publipostage à des destinataires principaux ET des destinataires en copie ?

Anonyme
2024-04-26T13:22:09+00:00

Bonjour à tous,

et surtout merci à ceux qui prendront le temps de me lire et éventuellement m'aider

J'ai vu que la question avait été souvent posée mais la réponse rarement trouvée alors je retente ma chance.

Je dois réaliser l'envoi d'un mail à 180 personnes différentes, avec des informations adaptées pour chacune (prénom, chiffres, etc...) via publipostage à partir de Word avec un destinataire unique (A) et un destinataire en copie (Cc).
Le fichier excel que j'utilise en liste de contacts est donc structuré de la sorte

Nom destinataire principal Prénom destinataire principal Mail destinataire principal Nom destinataire copie Prénom destinataire copie Mail destinataire copie
Jean Pierre ******@outlook.fr Marie Claude ******@outlook.fr

Problème : au moment où je souhaite terminer et fusionner, j'ai uniquement la possibilité d'adresser le mail à un destinataire unique et pas à un autre mail (en copie).
Il me manque le champ "Cc" dans le volet ci-dessous :

1714111550138.png

J'ai lu à plusieurs reprises que le problème pouvait être résolu en insérant une macro mais tout ce que j'ai essayé n'a pas fonctionné.

L'un ou l'une d'entre vous aurait il une solution facilement utilisable et compréhensible ?

Je suis complètement novice en la matière mais si on m'explique bien je peux comprendre 

UN GRAND MERCI POUR VOTRE AIDE

Microsoft 365 et Office | Word | Other | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire

4 réponses

  1. Hecatonchire 53,870 Points de réputation Modérateur bénévole
    2024-04-26T16:36:25+00:00

    Bonjour Marine,

    Je te répond ici. Je te propose cette macro :

    (je ne l'ai pas trop testé, elle risque d'être lente s'il y a plusieurs centaines de destinataires)

    Sub Emailling_CC()

     ' Objectif    : Générer un publipostage sous forme d'e-mail avec un destinataire en CC.
    
     ' Utilisation : A partir du document principal de fusion (celui avec les champs de fusion),
    
     '                    lancer la macro **en ayant au préalable mis à jour les constantes du début du code.**
    
     **'                    Choisir soit Display ou Send en bas du code (ajouter ou supprimer l'apostrophe).**
    
     ' Auteur      : Arnaud ([www.1forme.fr](https://www.1forme.fr "www.1forme.fr"))
    
     ' Licence     : CC-BY-NC-SA (Vous pouvez diffuser/partager/modifier cette macro dans les même conditions,
    
     '                           seulement à titre personnel et citant l'auteur/site d'origine.
    
     ' Constantes à mettre à jour !
    
     ' ============================
    
     ' Modifier les valeurs à droite de l'égale (=), conserver les guillemets
    
     Const strChampMail\_To     As String = **"A"**          ' Champ donnant le nom du destinataire
    
     Const strChampMail\_CC     As String = **"CC"**       ' Champ donnant le nom du destinataire en copie ("" si non utilisée)
    
     Const strObjetMail        As String = **"Invitation"**  ' Objet du mail
    
     Const strImportant        As String = **"Non"**          ' Marquer comme important (Oui ou Non)
    
     Const strAccReception     As String = **"Non"**       ' Demander un accusé de réception (Oui ou Non)
    
     ' Variables (ne pas modifier)
    
     Dim objMailMerge    As MailMerge
    
     Dim i               As Integer
    
     Dim intNbEnrg       As Integer
    
     Dim strMail\_To      As String
    
     Dim strMail\_CC      As String
    
     Dim OutApp          As Object
    
     Dim OutMail         As Object
    
     On Error Resume Next
    
     Set OutApp = GetObject(, "Outlook.Application")
    
     If Err <> 0 Then
    
         Set OutApp = CreateObject("Outlook.Application")
    
     End If
    
     On Error GoTo fin
    
     Set objMailMerge = ActiveDocument.MailMerge
    
     intNbEnrg = objMailMerge.DataSource.RecordCount
    
     For i = 0 To intNbEnrg - 1
    
         With objMailMerge
    
             .DataSource.FirstRecord = i + 1
    
             .DataSource.LastRecord = i + 1
    
             .Destination = wdSendToNewDocument
    
             .DataSource.ActiveRecord = i + 1
    
             strMail\_To = .DataSource.DataFields(strChampMail\_To)
    
             If strChampMail\_CC <> "" Then strMail\_CC = .DataSource.DataFields(strChampMail\_CC)
    
             .Execute
    
         End With
    
         ActiveDocument.Content.Copy         Set OutMail = OutApp.CreateItem(0) ' olMailItem (Nom cst non interprétable)
    
         With OutMail
    
             .Subject = strObjetMail
    
             .To = strMail\_To
    
             .CC = strMail\_CC
    
             Set objEdit = .GetInspector.WordEditor
    
             objEdit.Content.Paste
    
             .Importance = IIf(strImportant = "Oui", 2, 1) ' 2= olImportanceHigh, 1= olImportanceNormal
    
             .OriginatorDeliveryReportRequested = (strAccReception = "Oui")
    
             ' A paramétrer !
    
             ' ==============
    
             **.Display ' Afficher l'e-mail (Commenter cette ligne pour un envoie automatique)**
    
             **'.Send   ' Envoyer l'e-mail (Décommenter cette ligne pour un envoie automatique)**
    
         End With
    
         ActiveDocument.Close savechanges:=False
    
     Next
    

    fin:

     Set objEdit = Nothing
    
     Set OutMail = Nothing
    
     Set OutApp = Nothing
    
     Set objMailMerge = Nothing
    

    End Sub

    Bon week-end

    Cette réponse a-t-elle été utile ?

    1 personne a trouvé cette réponse utile.
    0 commentaires Aucun commentaire
  2. Hecatonchire 53,870 Points de réputation Modérateur bénévole
    2024-05-02T13:32:44+00:00

    Bonjour,

    Suite à ta question je me suis dit que se serait intéressant de développer une interface graphique pour exécuter cette macro et ses différentes variantes présentent sur mon site et offrant ainsi à l'utilisateur plus de paramètres facilement modifiables.

    C'est en cours de réalisation mais je me suis aperçus d'un étrange bug.

    L'utilisation du copier/coller (je n'aime pas trop cette manière de faire mais faute de mieux !) fait que le .Send n'est pas utilisable directement !

    Il faut faire forcement .Display puis .Send

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Hecatonchire 53,870 Points de réputation Modérateur bénévole
    2024-04-29T07:54:28+00:00

    Bonjour,

    Avec Display, les mails sont créés mais pas envoyés. Ils sont ouverts dans autant de fenêtre (limite avant que ça plante ???), permettant ainsi de les personnaliser manuellement un par un avant de les envoyer.

    Avec Send, ils sont directement envoyés.

    Sinon en mettant Outlook en mode "Travail hors connexion" et avec Send, les mails se trouveront bloqués dans la boîte d'envoi permettant de contrôler/modifier certains puis de les débloquer en désactivant le mode "Travail hors connexion"

    Pour choisir Send ou Display, il faut mettre ou enlever l'apostrophe à gauche.

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  4. Anonyme
    2024-04-29T07:24:44+00:00

    Bonjour Arnaud,

    et merci BEAUCOUP pour ta réponse.

    Peux-tu me préciser s'il te plait quelle sera la différence si je choisi DISPLAY plutôt que SEND et inversement ?

    Et si je comprends bien, par exemple si je choisis DISPLAY, c'est comme cela que je dois le modifier dans la macro ?


    OriginatorDeliveryReportRequested = (strAccReception = "Oui")

    ' A paramétrer !

    '.Display ' Afficher l'e-mail (Commenter cette ligne pour un envoie automatique)

    End With

    ActiveDocument.Close savechanges:=False

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire