[VBA] Envoi mail plusieurs destinataires

Résolu
Gwen38 -  
 Gwen38 -
Bonjour,
Je suis un newbie en prog et j'ai fait une petite application afin d'envoyer un message sur l'évolution de projet à un service contenant plusieurs personnes. Le voici :

Sujet = "Informations Achats concernant " & Me.NomProduit & " du projet " & Me.NomProjet
Corps = "Bonjour, " & vbCr & vbCr & Me.CommentaireACH & vbCr & vbCr & "Cordialement "
'Envoi au 1er service concerné
If Not IsNull(Me.TransmisAACH) Then
    MonSQL = "SELECT Adressedemessagerie "
    MonSQL = MonSQL & "FROM T_Services INNER JOIN T_Contacts ON T_Services.NumService = T_Contacts.Service "
    MonSQL = MonSQL & "WHERE T_Services.NumService = " & Me.TransmisAACH & "; "
    Set rs = CurrentDb.OpenRecordset(MonSQL, dbOpenDynaset)
    Do While Not rs.EOF
        Mail = rs("Adressedemessagerie")
        DoCmd.SendObject acSendNoObject, , , Mail, , , Sujet, Corps, False
        rs.MoveNext
    Loop
    Else
    Reponse = MsgBox("Vous n'avez pas choisi de service pour la diffusion.", vbInformation, "Problème d'envoi")
    DoCmd.CancelEvent
    DoCmd.GoToControl ("TransmisAACH")
    Me.TransmisAACH.Dropdown
    Exit Sub
End If

Je suis obligé d'envoyer le message à chaque boucle car il ne garde pas en mémoire.
Y a t il plus simple?
Je vous remercie de votre réponse.

1 réponse

blux Messages postés 27109 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

je n'ai pas compris ton problème, notamment ici :

Je suis obligé d'envoyer le message à chaque boucle car il ne garde pas en mémoire.
qu'est ce qui n'est pas gardé en mémoire ?
0
Gwen38
 
Je voulais que pendant la boucle il garde le mail en mémoire afin de l'incrémenter au champ Mail à la fin.

Ex : 1ère boucle il trouve truc@machin.fr
2ème boucle il trouve machin@truc.fr

Et a la fin il concatene : Mail = truc@machin.fr; machin@truc.fr

Comment faire?
0
blux Messages postés 27109 Date d'inscription   Statut Modérateur Dernière intervention   3 359 > Gwen38
 
dans ta boucle, tu supprimes ton DoCmd.SendObject et tu mets :

mail = mail & rs("Adressedemessagerie") & ";"

dès que tu sors de ta boucle, tu supprimes le ; en trop à la fin

mail = left(len(mail)-1)

et ensuite tu fais ton DoCmd.SendObject
0
Gwen38 > blux Messages postés 27109 Date d'inscription   Statut Modérateur Dernière intervention  
 
Je te remercie beaucoup. J'ai copié ce que tu m'as écrit. je ne sais pas si ca marche mais il me dit que le Len n'est pas un argument facultatif. Qu'est ce que cela veut dire?
0
blux Messages postés 27109 Date d'inscription   Statut Modérateur Dernière intervention   3 359 > Gwen38
 
je me suis trompé :

c'est plutôt :

mail = left(mail,len(mail)-1)
0
Gwen38 > blux Messages postés 27109 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ca marche bien pour 2 mails mais lorsque ca repart pour un tour. Il me dit qu'il n'y a pas d'enregistrement. Voilà comment je l'ai réécrit :
Do While Not rs.EOF
            Mail = rs("Adressedemessagerie")
            rs.MoveNext
            Mail = Mail & "; " & rs("Adressedemessagerie") & ";"
        Loop
    Mail = Left(Mail, Len(Mail) - 1)
    DoCmd.SendObject acSendNoObject, , , Mail, , , Sujet, Corps, False


Me suis je trompé?
0