Récupération données dans email CDO
Bonsoir le forum
je fais une macro pour envoyer un mail concernant les clients à relancer d'un fichier
j'ai trouvé du code pour créer et envoyer mes messages mais ils sont vides des données
pouvez vous m'éclairer sur ce que je ne fais correctement ?
d'avance merci pour votre aide
A B C D E
Nom du client Email Société date de relance tel
Name1 Name1@domaine1.fr Enterprise1 20/03/2019 102030405
Name2 Name2@domaine2.fr Enterprise2 15/04/2019 412563987
Name3 Name3@domaine3.fr Enterprise3 21/03/2019 2589631470
Name4 Name4@domaine4.fr Enterprise4 10/05/2019 14563017
Name5 Name5@domaine5.fr Enterprise5 10/06/2019 456987123
CODE MACRO
Sub test()
Dim Nom As String
Dim Email As String
Dim Ste As String
Dim Tel As String
'création du mail d'info
With Sheets("Zone 1")
Set Nom = Range("A2:A50")
Set Email = Range("B2:B50")
Set Ste = Range("C2:C50")
Set Tel = Range("E2:E50")
End With
Subject = Nom + " - " + Ste
Body = Nom + " " + Ste + " " + Tel
ZONE1 = Sheets("Zone 1").Range("D2:D50")
For Each cell In ZONE1
If cell = Date Then 'oCdo
Application.Run "PERSONAL.XLSB!Module1.relance_mail"
End If
Next cell
End Sub
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Code des macros personnelles appelées :
Public Sub MailEnvoi(Serveur, Identify, User, PassWord, Port, Delay, Expediteur, Dest, DestEnCopy, Subject, Body, Pj)
' sub pour envoyer les mails
Dim msg
Dim Conf
Dim Config
Dim ess
Dim splitPj
Dim IsplitPj
Set msg = CreateObject("CDO.Message") 'pour la configuration du message
Set Conf = CreateObject("CDO.Configuration") ' pour la configuration de l'envoi
Dim strHTML
Set Config = Conf.Fields
' Configuration des parametres d'envoi
'(SMTP - Identification - SSL - Password - Nom Utilisateur - Adresse messagerie)
With Config
If Identify = True Then
.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") = User
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = PassWord
End If
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Port
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Serveur
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = Delay
.Update
End With
'Configuration du message
'If E_mail.Sign.Value = Checked Then Convert ServeurFrm.SignTXT, ServeurFrm.Text1
With msg
Set .Configuration = Conf
.To = Dest
.cc = DestEnCopy
.FROM = Expediteur
.Subject = Subject
.TextBody = Body
.Send 'envoi du message
End With
' reinitialisation des variables
Set msg = Nothing
Set Conf = Nothing
Set Config = Nothing
End Sub
[b]Sub relance_mail()[/b]
MailEnvoi "smtp.googlemail.com", True, "My.Mail@gmail.com", "Pasw", 465, 10, "My.Mail@gmail.com", "Vous.Mail@gmail.com", "Copy@gmail.com", Subject, Body
End Sub
Bonjour,
je ne comprends pas la relation entre
Application.Run "PERSONAL.XLSB!Module1.relance_mail"
et
Public Sub MailEnvoi(Serveur, Identify, User, PassWord, Port, Delay, Expediteur, Dest, DestEnCopy, Subject, Body, Pj)
ni comment sont passés les paramètres
bonjour Steelson
en fait les paramètres d'envoi sont dans la macro : relance_mail
là se trouve tous les éléments permettant d'envoyer le message
et dans Public Sub MailEnvoi la configuration du message (si j'ai bien tout compris - code que j'ai adapté)
la macro fonctionne correctement : elle boucle bien sur toutes les cellules de la colonne D et lorsque la date d'une cellule est égale à la date du jour, un mail est bien envoyé mais il est vide.
mon problème est donc pourquoi je ne récupère pas les informations demandées :
nom - email - ste - tel ?
dans le modèle que j'ai tous les éléments se trouvent dans : Public Sub MailEnvoi ;
MailEnvoi "smtp.googlemail.com", True, "My.Mail@gmail.com", "Pasw", 465, 10, "My.Mail@gmail.com", "Vous.Mail@gmail.com", "Copy@gmail.com", Subject, Body
donc il faudrait que Subject corresponde à chaque envoi à la bonne donnée
ainsi que Body
je ne vois pas comment indiquer le bon code et où le passer pour que cela fonctionne
je ne sais pas si je suis bien claire dans mon explication du problème...
merci pour ton aide
dans le modèle que j'ai tous les éléments se trouvent dans : Public Sub MailEnvoi ;
MailEnvoi "smtp.googlemail.com", True, "My.Mail@gmail.com", "Pasw", 465, 10, "My.Mail@gmail.com", "Vous.Mail@gmail.com", "Copy@gmail.com", Subject, Body
donc il faudrait que Subject corresponde à chaque envoi à la bonne donnée
ainsi que Body
je ne vois pas comment indiquer le bon code et où le passer pour que cela fonctionne
ok, donc il manquait une donnée à l'origine car MailEnvoi n'était pas détaillé dans ton post.
Maintenant il faudrait passer aussi les paramètres Subject et Body
C'est difficile de répondre dans la mesure où on n'a pas une vue d'ensemble des macros.
Le mieux est que tu puisses nous donner un fichier excel anonymisé (en effaçant ton password aussi)
Sinon, voici un exemple avec CDO et gmail et qui fonctionne.
merci Steelson
j'ai pu refaire la macro qui fonctionne parfaitement bien maintenant grâce à ton modèle joint.
mon problème est que je ne souhaite pas que les paramètres
username et password soient visibles dans la macro du fichier.
comment créer une macro privée dans le fichier Personal.xlsb par exemple et l'appeler depuis mon fichier pour éviter que ces données personnelles soient dans le fichier utilisé ?
car si j'envoie mon fichier à quelqu'un, je ne souhaite pas que cette personne ait ces données perso
voici mon fichier avec macro qui fonctionne très bien
merci d'avance pour votre aide à tous
Bonne remarque, mais je n'ai jamais fait.mon problème est que je ne souhaite pas que les paramètres
username et password soient visibles dans la macro du fichier.
comment créer une macro privée dans le fichier Personal.xlsb par exemple et l'appeler depuis mon fichier
Poste un nouveau topic de style :
comment créer une macro privée dans le fichier Personal.xlsb par exemple et l'appeler depuis mon fichier en lui passant des paramètres
j'ai trouvé une solution :
je crée un fichier Programme_relances.xlsm
dans ce fichier je crée la macro suivante :
Sub Programme_Relance()
'automatisation des relances par mail
'date de création : 21 mars 2019
Application.Run "PERSONAL.xlsb!Ouvrir_Relance_clients" 'ouvre le fichier clients
Application.Run "PERSONAL.xlsb!RelanceClientsParGMail" 'lance le programme d'envoi de mails et referme le fichier puis Excel
End Sub
de cette façon, le fichier clients ne contient plus de macro, et peut être transmis sans avoir le souci des paramètres d'envoi de mail contenus dans une macro
c'est le plus simple que j'ai trouvé à faire
encore merci pour ton aide qui m'a permis de résoudre mes problèmes
Et merci pour ton astuce.
Michel ex-91220