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.

4cdo-gmail.xlsm (15.49 Ko)

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

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

Bonne remarque, mais je n'ai jamais fait.

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

Rechercher des sujets similaires à "recuperation donnees email cdo"