Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Envoi de mails par CDO : syntaxe pour plusieurs CC

346 views
Skip to first unread message

ThierryP

unread,
Feb 15, 2013, 5:48:31 AM2/15/13
to
Bonjour le forum,

Je souhaite envoyer un Email à plusieurs personnes en CC : une adresse est récupérée dans une cellule, mais je voudrais ajouter deux adresses "en dur" dans le code.... et je n'arrive pas à trouver la syntaxe. Dois-je boucler sur une plage pour envoyer en plusieurs fois, ou y a-t-il plus efficace ?

Merci d'avance pour vos lumières !

ThierryP

MichD

unread,
Feb 15, 2013, 7:19:27 AM2/15/13
to
Bonjour,

Habituellement, un point virgule entre les destinataires sont suffisants

Tout ce que tu veux savoir sur ce site :
http://www.rondebruin.nl/cdo.htm#Tips

L'exemple comporte 2 adresses fixes + le contenu de la cellule A1 de la
feuille Feuil1
Feuil1 représente la propriété Name de l'objet Feuille et non le nom de
l'onglet.

'-------------------------------------
Sub EnvoiMail_Par_CDO()
Dim Destinataire As String, Expéditeur As String, Sujet As String
Dim TexteMessage As String, FichierAttaché As String, ServeurSMTP As String
Expéditeur = "Expéditeur@Serveur"
Destinataire = Feuil1.Range("A1")
Sujet = "Test envoi"
TexteMessage = "Le texte du message"
'FichierAttaché = "Adresse et nom du fichier à joindre"
ServeurSMTP = "smtp.Serveur"

'Construction et envoi
With CreateObject("CDO.Message")
.From = Expéditeur
.To = Destinataire
.CC = """Destinataire1@Serveur"";""Destinataire2@Serveur"";"" &
Feuil1.Range(""A1"") & """
.Subject = Sujet
.TextBody = TexteMessage
If FichierAttaché <> "" Then
.AddAttachment FichierAttaché
End If
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") =
ServeurSMTP
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25
.Update
End With
.Send
End With
End Sub

'-------------------------------------

MichD
---------------------------------------------------------------

ThierryP

unread,
Feb 15, 2013, 8:55:18 AM2/15/13
to
Bonjour Denis,

Toujours infatigable :-)))

Merci pour l'exemple.... qui m'a permis de me rendre compte que j'ai toujours du mal à empiler les guillemets !!

Mais il doit subsister un petit souci... Même en recopiant exactement ton exemple, avec des adresses valides bien sûr, j'ai une erreur. Voici ce que me renvoie un debug.print :
"La réponse du serveur était : 550 5.5.0 < & Feuil1.Range( A1 ) & > invalid address"

Il semble que VBA lit littéralement le texte au lieu de récupérer la valeur de A1.... et je ne sais plus où essayer de rajouter ou d'enlever ces @%$*ù£? de guillemets !!

Merci pour le site de Ron de Bruin, mais déjà précieusement dans mes favoris depuis longtemps :-))

ThierryP

MichD

unread,
Feb 15, 2013, 9:03:33 AM2/15/13
to

| "La réponse du serveur était : 550 5.5.0 < & Feuil1.Range( A1 ) & >
invalid address"

Si tu n'es pas familier avec ce type d'adresse : Feuil1.Range( A1 )
utilise plutôt ceci :
Worksheets("NomDelaDiteFeuille").Range("A1")

NomDelaDiteFeuille : C'est le nom de l'onglet où
est l'adresse de courriel à récupérer

A1 : La cellule où est inscrite l'adresse.

La procédure que je t'ai envoyée a été testée ce matin même
et elle fonctionne correctement



MichD
---------------------------------------------------------------
"ThierryP" a écrit dans le message de groupe de discussion :
54ee81de-3822-4122...@googlegroups.com...

ThierryP

unread,
Feb 15, 2013, 9:46:31 AM2/15/13
to
Merci pour le retour, mais oui je suis familier avec ce type de notation, même si je n'ai pas tes connaissances !

J'ai fait un strict copier/coller de ta procédure dans un classeur vierge en adaptant à ma configuration, voilà ce que ça donne (avec toujours la même erreur) :

'-------------------------------------
ub EnvoiMail_Par_CDO()
Dim Destinataire As String, Expéditeur As String, Sujet As String
Dim TexteMessage As String, FichierAttaché As String, ServeurSMTP As String
Expéditeur = "moi@mon_domaine.com"
Destinataire = Feuil1.Range("A1")
Sujet = "Test envoi"
TexteMessage = "Le texte du message"
On Error GoTo Erreur
'Construction et envoi
With CreateObject("CDO.Message")
.From = Expéditeur
.To = Destinataire
.CC = """untel@mon_domaine.com"";""user2@mon_domaine.com"";"" & Feuil1.Range(""A1"") & """ 'Avec mon adresse en A1
.Subject = Sujet
.TextBody = TexteMessage
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "mails.9services.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "moi@mon_domaine.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mon_mot_de_passe"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Update
End With
.Send
End With
Exit Sub
Erreur:
Debug.Print Err.Source & Err.Description
End Sub
'------------------------------------------------------

Et le debug me renvoie toujours cette erreur :
"VBAProject Le serveur a rejeté une ou plusieurs adresses de destinataires. La réponse du serveur était : 550 5.5.0 < & Feuil1.Range( A1 ) & > invalid address"

Comme je ne vois pas les guillemets autour de A1, on dirait que VBA ne va pas chercher l'adresse en A1, mais interprète littéralement Feuil1. etc..

Je suis sous Excel 2002, y aurait-il une différence avec 2010 ou 2013 ?????

Merci de ta patience.....

ThierryP

MichD

unread,
Feb 15, 2013, 10:26:59 AM2/15/13
to
A ) Pourquoi veux-tu envoyer ton message 2 fois au même destinataire?
Destinataire = Feuil1.Range("A1")
Et tu utilises la même adresse dans CC

B ) L'envoi du courriel à l'adresse qu'utilise l'expéditeur ne fonctionne
pas
cela ne provoque pas d'erreur, mais l'expéditeur ne reçoit pas le
message.

C ) Tu as effectivement le SMTP de ton programme de courriel

Je ne peux pas corriger l'erreur, je n'ai aucun problème à exécuter cette
procédure sans erreur.


MichD
---------------------------------------------------------------
"ThierryP" a écrit dans le message de groupe de discussion :
18ded10e-b803-4136...@googlegroups.com...

ThierryP

unread,
Feb 15, 2013, 11:00:40 AM2/15/13
to
A) Fichier en test, donc je ne veux pas polluer le monde entier avec mes essais!!
B) euh... J'ai quand même vérifié !! Ce sont des adresse de collègues dans le bureau voisin.... pratique pour vérifier que ça arrive !!
C) Si j'utilise ta syntaxe sans la partie "Feuil1.range" etc..., les Emails partent sans problème.

Merci malgré tout de ton aide.

ThierryP

Yopop

unread,
Feb 15, 2013, 11:45:18 AM2/15/13
to
Bonjour,

Ca semble être la partie .CC qui pose problème.
essaye comme ça :

.CC = """untel@mon_domaine.com"";""user2@mon_domaine.com"";""" &
Feuil1.Range("A1") & """"

en recollant tout sur une ligne.

j-p

MichD

unread,
Feb 15, 2013, 1:34:44 PM2/15/13
to
Un dernier test :

'-------------------------------------------
Sub EnvoiMail()
Dim Destinataire As String, Expéditeur As String, Sujet As String
Dim TexteMessage As String, FichierAttaché As String, ServeurSMTP As String
Expéditeur = "NOM@fournisseur"
Destinataire = Feuil1.Range("A1")
Sujet = "Test envoi"
TexteMessage = "Le texte du message"
'FichierAttaché = "Adresse et nom du fichier à joindre"
ServeurSMTP = "smtp.serveur"

'Construction et envoi
With CreateObject("CDO.Message")
.From = Expéditeur
.To = Destinataire
.CC = """Destinataire1@Fournisseur"";""Destinataire2@Fournisseur"";"""
& Feuil1.Range("A1") & """"

.Subject = Sujet
.TextBody = TexteMessage
If FichierAttaché <> "" Then
.AddAttachment FichierAttaché
End If
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
ServeurSMTP
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25
.Update
End With
.Send
End With

End Sub
'-------------------------------------------

MichD
---------------------------------------------------------------

ThierryP

unread,
Feb 17, 2013, 8:57:23 AM2/17/13
to
Bonjour Denis,

Ce qui est bien, c'est que tu n'abandonnes jamais :-)))))))
Cette fois, tout est OK, les tests depuis chez moi fonctionnent !!

Encore merci pour tout !!

ThierryP

ThierryP

unread,
Feb 17, 2013, 8:59:20 AM2/17/13
to
Bonjour Yopop,

Bien vu !! Toujours du mal avec les "" :-))
Michdenis et toi avez su compter correctement et tout marche nickel

Merci

ThierryP
0 new messages