[VBA] Envoi mail plusieurs destinataires

Résolu/Fermé
Gwen38 - 19 juin 2008 à 13:40
 Gwen38 - 20 juin 2008 à 12:48
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.
A voir également:

1 réponse

blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287
19 juin 2008 à 13:56
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
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 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287 > Gwen38
19 juin 2008 à 15:04
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 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024
19 juin 2008 à 15:42
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 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024 3 287 > Gwen38
19 juin 2008 à 15:55
je me suis trompé :

c'est plutôt :

mail = left(mail,len(mail)-1)
0
Gwen38 > blux Messages postés 25976 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 18 avril 2024
19 juin 2008 à 16:43
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