Utiliser CDO pour envoi mel de maniere plus ergonomique
Bonjour,
J'utilise un code récupéré sur le forum qui me permet d'envoyer des mels à partir d'excel. Il fonctionne parfaitement.
Cependant le paramétrage du CDO est codé "en dur" dans la macro vba comme ci dessous :
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' Source par défaut CDO
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Testcompetencespc@....com" ' mél
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mot2pass" 'mot de passe de la boite mél
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Update
End WithJe voudrais que ces différentes valeurs de paramétrages (True, 1, "Testcompetencespc@....com", etc) soient dans des cellules particulières de l'onglet Mels pour une meilleure ergonomie.
J'ai essayé le code suivant :
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' Source par défaut CDO
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = Worksheets("Mels").Range("I3").Value
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = Worksheets("Mels").Range("I4").Value
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Worksheets("Mels").Range("I5").Value
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Worksheets("Mels").Range("I6").Value
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Worksheets("Mels").Range("I7").Value
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = Worksheets("Mels").Range("I8").Value
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Worksheets("Mels").Range("I9").Value
.Update
End WithCependant ce code ne fonctionne pas.
Après analyse, il semblerait que cela soit les guillemets "" qui posent problème.
J'ai essayé plusieurs approches pour résoudre le problème qui ont toutes échoué :
- Mettre des guillemets entourant l'adresse mél, le mot de passe et le serveur smtp directement dans chaque cellule
- Utiliser Chr$(34) pour simuler un guillemet par exemple avec Chr$(34) & Worksheets("Mels").Range("I5").Value & Chr$(34)
- Utiliser """" par exemple avec """" & Worksheets("Mels").Range("I5").Value & """"
Si quelqu'un a une idée ...
Merci d'avance
Cordialement
Bonjour,
Qu'est-ce qui te fait dire que ce sont les " " le pb ?
Elles sont là juste pour indiquer une chaine.
Dans I3, tu as mis VRAI et non True (si excel en français)?
eric
- Messages
- 308
- Excel
- 2016
- Inscrit
- 15/06/2017
- Emploi
- Bénéficiaire de la sécurité de la vieillesse
Bonjour mamatt24, bonjour le fil, bonjour le forum,
À moins que je n'aie rien compris à ta demande...
Tu as configuré un serveur de sortie de mail ( smtp.gmail.com)
Si la config fonctionne, tu n'as rien à dynamiser.
La config smtp est bonne pour envoyer des courriels à n'importe qui.
Le bout que tu auras à dynamiser est le bout avec les adresses des récipiendaires.
Pas celle de l'envoyeur.
Joseph
Bonjour,
Merci pour vos réponses.
Après plusieurs tentatives en mettant les différentes valeurs dans les cellules, j'ai remarqué que seules celles qui sont entre guillemets qui ne fonctionnaient pas.
Les adresses méls des destinataires sont déjà notées dans l'onglet mels, je veux aussi mettre ce paramétrage de l’expéditeur (paramétrage CDO) dans ce même onglet (dans une autre zone) pour faciliter la vie à mes collègues à qui je fais fournir ce fichier (je ne suis pas sur que tous pourront aller tripatouiller dans une macro Excel pour modifier le paramétrage).
Cordialement
Mamatt24
PS : Je peux fournir le fichier complet mais il y a pas mal de codes autres que celui de l'envoi de méls.
Je viens de contrôler en 'espionnant' iConf.
Si tu utilises .value (et tu le fais) l'item se rempli correctement à-priori.
Bonjour,
Pour moi, avec seulement Value, cela ne fonctionne pas.
Par contre, j'ai utilisé la fonction CStr pour forcer la conversion en String et cela fonctionne.
Je vous joins la solution que j'utilise :
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
iConf.Load -1 ' Source par défaut CDO
Set Flds = iConf.Fields
With Flds
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = Worksheets("Mels").Range("I3").Value 'True
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = Worksheets("Mels").Range("I4").Value '1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = CStr(Worksheets("Mels").Range("I5").Value) ' email
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = CStr(Worksheets("Mels").Range("I6").Value) ' mot de passe
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = CStr(Worksheets("Mels").Range("I7").Value) ' "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = Worksheets("Mels").Range("I8").Value '2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Worksheets("Mels").Range("I9").Value '465
.Update
End WithMerci à tous pour l'aide apportée.
Cordialement
Mamatt24
Etrange mais tant mieux pour toi
Par curiosité et pour compléter pourrais-tu tester sans cstr mais avec .text ?
eric
Salut,
Tu as raison : cela fonctionne aussi avec .Text.
A titre d'info et avec .Value, j'avais centré les valeurs dans la cellule. Est ce que cela pouvait influencer ?????
Bonne soirée à toi.
Bonjour,
théoriquement l'alignement n' a rien à voir, mais de la même façon que .value aurait dû te ramener une chaine correcte
eric