Relier un tableau Excel à Outlook

Bonjour à tous,

Débutant en VBA, j'aurais aimé réalisé une macro, mais je ne sais pas du tout comment procéder.

La Macro:

L'objectif, c'est de relier un tableau excel à Outlook.

Dans Excel, je crée un tableau avec:

Mail Nom Prénom Monsieur Ou Madame

Je rentre ces informations, et en cliquant sur le bouton de la macro,

la page de la rédaction du mail s'ouvre, avec tous les mails en black copie. Il me reste plus qu'à rédiger mon mail,

et lorsque le mail est envoyé, est adapté à chaque adresse mail le nom prénom de la personne et le sexe également (Monsieur ou Madame).

Est ce que quelqu'un pourrait m'aider?

Je vous remercie!

Bonne journée

Un début ... en attendant les demandes complémentaires

314mailing-simple.xlsm (14.67 Ko)

C'est déjà super! Merci.

La dernière chose qu'il me faudrait, c'est que les mails soient en fait en Black copie (le but est un envoie groupé et que chaque personne ait le monsieur ou madame. Mais j'imagine que c'est d'une tout autre difficulté...

Pour le black copie, j'ai pu modifier (j'ai changé To en Bcc).

Abilys38 a écrit :

Pour le black copie, j'ai pu modifier (j'ai changé To en Bcc).

Patrfait !

Attends-tu alors autre chose ?

Abilys38 a écrit :

le but est un envoie groupé et que chaque personne ait le monsieur ou madame

si c'est groupé, je suppose donc que c'est "Monsieur, Madame", car si c'est groupé on ne pourra pas mettre l'un ou l'autre en fonction de la personne, à moins de grouper par sexe. Précise ta demande et je te le fais ...

Alors,

1) Il me semble au vu du code de la macro que si je rajoute une quantité x d'adresses mails, la macro actuelle ne va pas chercher les adresses jusqu'à la première cellule vide. Je me trompe?

Serait il possible de faire ce même code avec une boucle do while <> " (Non pas que je ne veux pas le faire, mais je ne sais pas vraiment comment procéder...)

2) J'aimerais en fait que CHAQUE mail soit personnalisé comme c'est le cas actuellement. SAUF QUE:

Pour le moment, lorsque je lance la macro, ça m'ouvre autant de pages de rédaction de mail que d'adresses mail (donc si j'ai 100 adresses mails, ça fait beaucoup). Est il possible de créer un mail qui s'envoie automatiquement à chaque personne, avec le sexe, nom et prénom individuel, sans que je dois à chaque fois copier coller le mail puis envoyer?

Merci beaucoup pour ton aide

Je ne peux pas tester car je n'ai plus outlook ...

Pour le 1/

For Each cel In Range("A2:A" & Range("A1").End(xlDown).Row)
'...       
Next cel

prend en compte toutes les adresses mail jusqu'à la dernière

Pour le 2/ j'attendais en effet le complément de ton post...

  • pour envoyer automatiquement, il suffit de remplacer display par send, mais tu m'as bien dit qu'il fallait mettre les destinataires en BCC, donc QUI est le destinataire
  • ce que je fais pour le contenu, c'est que je le rédige DANS excel afin qu'il le copie dans chaque mail et l'envoie, sinon je ne comprends pas bien ta demande

Pour ta question du destinataire, en fait les destinataires sont tous en Bcc.

Le but étant d'envoyer un mailing sans que les personnes ne voient les mails des autres.

Donc je pense que finalement la MACRO est quasiment prête. Voilà ce que je propose:

Je crée une immense cellule dans laquelle je rédige la suite du mail (c a d aprés "Bonjour Monsieur/Madame Nom Prenom)

et dans le body, je demande au code de mettre automatiquement cette cellule. C'est ça que tu proposais n'est ce pas?

Ajoute dans ce cas :

.body = Range("MonTexte").value 'ici le nom de la cellule contenant ton texte

C'est ce que j'ai fais, j'ai juste mis ligne et collone au lieu de mettre Montexte mais effectivement c'est pas plus mal.

Il me reste plus qu'à mettre des sauts de lignes pour que le visuel soit sympa Petite question, il y a un accusé de reception mais je sais pas si ça vient du code. Tu as mis un accusé dans les configs?

Merci pour ton aide Steelson !!

Encore une question Steelson,

Je reçois à chaque fois le message "Un programme tente d'envoyer un message en votre nom...", y a t-il un moyen de ne pas recevoir ce message?

Bonne soirée

Oui, l'accusé de réception vient du code, supprime la ligne ou mets False

.ReadReceiptRequested = True

Pour la question "Un programme tente d'envoyer un message en votre nom...", cela ne vient pas d'excel. Google-it pour voir ... il doit y avoir une option de sécurité dans outlook.


En effet, Il suffit d'aller dans les options d'Outlook, puis dans "Centre de gestion de la confidentialité", dans les "Paramètres du centre....", enfin section "Accès par programme" et cocher l’option souhaitée.

Ok!

Pour le message c'est ce que je craignais... Et les paramètres de sécurité réseau m'empêchent de modifier ce genre d'options sur Outlook. Je vais essayer de trouver une solution mais ça va être chaud pour le coup.

Merci

Bonjour,

J'aurais aimé rajouté en bas du mail un logo (en dessous de cordialement etc.)

J'ai mis le logo dans une cellule du classeur excel, mais le fait de l'appeler avec le numéro ligne et colonne ne fonctionne

pas. Avez vous une proposition?

Abilys38 a écrit :

Avez vous une proposition?

OUI et NON ...

S'il n'y a qu'un seul mail à envoyer à tous, on peut faire copier/coller du texte et du logo en même temps. Avantage = mettre en forme y compris couleurs, dans excel.

S'il y a plusieurs mails à envoyer, je n'ai pas de solution pour mettre ce logo dans le corps du mail SAUF :

  • - cela peut se faire je pense, en mettant une image du web, avec une adresse web
  • - ou alors avec le texte en PJ (pdf)

Disons que le seul endroit dynamique du mail est le "Monsieur Nom Prénom"

Ensuite, le corps du mail est le même pour tous !

J'ai même crée une cellule excel réservé à la signature. Mais je ne peux pas mettre une image dans la cellule (enfin je peux mais l'image ne se met pas dans le mail).

Malheureusement je n'ai plus outlook pour mettre au point une solution copier/coller qui ne va pas forcément fonctionner.

Reste la solution de faire appel à une image externe comme logo : as-tu la possibilité de stocker cette image sur un serveur externe que tes correspondants pourront aussi aller chercher ? genre site institutionnel d'entreprise ?

Effectivement je pense pouvoir trouver une image qui pourrait m'aider sur internet. Donc ta proposition m’intéresse.

C'est le plus simple !

Plusieurs modifications :

- remplace .body par .htmlbody

- ensuite, si tu veux retourner à la ligne, écrit cela en langage html dans ton texte : <br/>

- pour le logo, tu écris dans ton texte (j'ai pris un logo quelconque)

<img scr="http://www.ouest-france.fr/sites/all/themes/front/images/logos/logo-of-274x120.png">


Un exemple plus complexe de langage html dans un mail généré par excel

Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim contenu As String

contenu = _
    "<html><head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'>" & _
    "<style>td {font-family: verdana,arial,sans-serif;font-size: 12px;}</style>" & _
    "<body><table>" & _
    "<tr><td>Mon texte est sous forme</td><td>d'un tableau avec 2 colonnes</td></tr>" & _
    "<tr><td>J'&eacute;cris sur la premi&egrave;ve colonne</td><td></td></tr>" & _
    "<tr><td></td><td>ou sur la seconde</td></tr>" & _
    "<tr><td>Je peux faire appel à des cellules<br>faire un retour &agrave; la ligne</td><td></td></tr>" & _
    "<tr><td>mettre un logo<br><img src='http://1.1.1.2/bmi/upload.wikimedia.org/wikipedia/fr/c/cf/Logo_Microsoft_Excel_2013.png'></td><td>et ma signature</td></tr>" & _
    "</table></body></html>"

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = "quelqu'un"
        .Subject = "test envoi mail"
        .htmlbody = contenu
        .display
    End With

    Set messagerie = Nothing
    Set email = Nothing

End Sub

Quand tu dis mettre le lien dans le texte, tu parles du texte que j'ai sur ma cellule excel, ou le texte dans le code VBA?

J'ai essayé de mettre le lien que tu m'as donné, mais ça me met mon code en rouge.

Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim cel As Range

Set messagerie = CreateObject("Outlook.Application")

For Each cel In Range("A2:A" & Range("A1").End(xlDown).Row)

        Set email = messagerie.CreateItem(0)

        With email
            .To = cel
            .Subject = Cells(4, 6)
            .htmlbody = "Bonjour " & cel.Offset(, 3) & " " & cel.Offset(, 2) & " " & _
            cel.Offset(, 1) & ",  " & Chr(10) & Chr(10) & _
            Cells(7, 5) & Chr(10) & Chr(10) & Cells(28, 5) & _
            <img scr="http://www.ouest-france.fr/sites/all/themes/front/images/logos/logo-of-274x120.png">
            .ReadReceiptRequested = False
            .send ' à remplacer par .send si ok

        End With

        Set email = Nothing

Next cel

Set messagerie = Nothing

End Sub

Bonjour à tous les deux,

Très intéressant ce post. Pour ma part j'ai une autre approche en format HTML et qui fonction parfaitement.

Si cela peut vous aider, ci-après un exemple de code que j'utilise :

Dim msg As MailItem
Set olapp = New Outlook.Application
Set msg = olapp.CreateItem(olMailItem)
msg.To = Range("A19").value
'msg.CC = Range("a22").Value
'msg.BCC = Range("F13").Value 
 msg.Subject = "DEMANDE DE PRIX  -  " & Range("B10") & " - Réponse demandée pour le :" & Range("D17")

msg.HTMLBody = "<html><body><font color=""black""><font size=3><FONT FACE=""Georgia"">" & Range("B6") & "," & _
"<br /><br /><font size=5><B>" & "DEMANDE DE PRIX" & "</FONT>" & _
"<br /><br /><FONT color=""Blue"">" & Range("B10") & "</FONT></B>" & _
"<br /><br />" & "La demande de prix est lancée, je reviens vers toi le    " & "<B><FONT color=""RED""><Font style=""BACKGROUND-COLOR: Yellow"">" & Range("A20") & "</B></FONT></FONT>" & "   date prévue de retour des devis. " & _
"<br /><br />" & "Emile,  " & _
"<br /><br /><br />" & " </font></font></font></body></html>"
msg.Display

Je vais tester l'envoi groupé et l'insertion d'un logo. Merci

Rechercher des sujets similaires à "relier tableau outlook"