[VBA] Envoi mail plusieurs destinataires

Résolu/Fermé
Signaler
-
 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

Messages postés
23778
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
26 novembre 2021
3 148
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 ?
>
Messages postés
23778
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
26 novembre 2021

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é?
Messages postés
23778
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
26 novembre 2021
3 148 > Gwen38
tu mets un peu trop de ;
regarde mon exemple...
>
Messages postés
23778
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
26 novembre 2021

Ca y est ça fonctionne. mais encore un souci. Le premier email est en double :
Set rs = CurrentDb.OpenRecordset(MonSQL, dbOpenDynaset)
        Mail = rs("Adressedemessagerie")
        Do While Not rs.EOF
            Mail = Mail & rs("Adressedemessagerie") & "; "
            rs.MoveNext
            Loop
    Mail = Left(Mail, Len(Mail) - 1)
    DoCmd.SendObject acSendNoObject, , , Mail, , , Sujet, Corps, False


Ex : truc@machin.frtruc@machin.fr; ...

Comment éviter ce doublon?
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008
122 > Gwen38
C'est normal, tu initialises Mail = rs("Adressedemessagerie") juste avant ta boucle, et au premier passage dans la boucle, ca donne :

Mail = "truc@machin" & "truc@machin" & "; "

Il faut que tu initialises Mail comme du texte vide
Set rs = CurrentDb.OpenRecordset(MonSQL, dbOpenDynaset)
        Mail = ""
        Do While Not rs.EOF
            Mail = Mail & rs("Adressedemessagerie") & "; "
            rs.MoveNext
            Loop
    Mail = Left(Mail, Len(Mail) - 1)
    DoCmd.SendObject acSendNoObject, , , Mail, , , Sujet, Corps, False
>
Messages postés
375
Date d'inscription
mercredi 21 mai 2008
Statut
Membre
Dernière intervention
17 octobre 2008

Super.
merci beaucoup pour tous vos conseils.