Bonjour,
J'aimerais envoyer un mail type à toutes les personnes étant le résultat d'une requête (tous ceux de la base ayant telles caractéristiques).
J'ai troouvé ça dans les sources du site :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
Versions : Access 2000 et supérieures
Pour que cet exemple fonctionne vous devez activer les références Microsoft DAO et Microsoft Outlook
Ce module reprend le principe d'envoie de NewsLetter aux clients d'une société. La base de données se compose notamment d'une table nommée clients où figure un champ (ChampEmailClient) où est stockée l'adresse mail de chaque client.
Le principe est trés simple il suffit d'enrichir la propriété BCC (copie carbone cachée) de l'objet oMail à partir de la liste des clients.
On aura ainsi :
oMail.BCC="toto@domaine.fr; titi@domaine.fr; tata@domaine.com"
Public Sub EnvoiMassif()
'Ajouter les références suivantes :
'Microsoft Outlook
'Microsoft DAO
Dim oApp As Outlook.Application
Dim oMail As Outlook.MailItem
Dim strContenu As String
Dim oRst As DAO.Recordset
Dim oFld As DAO.Field
Dim strTo As String
'Instancie Outlook
Set oApp = CreateObject("Outlook.Application")
'Crée un nouveau message
Set oMail = oApp.CreateItem(olMailItem)
oMail.Body = "Bonjour," & vbCrLf & _
"Venez retrouver l'ensemble de nos produits sur notre site Web" & _
vbCrLf & "http://www.notresite.fr"
'Ouvre un recordset sur les clients
Set oRst = CurrentDb.OpenRecordset("SELECT * FROM Clients")
'Boucle sur chaque client et les ajoute au champ BCC du mail
While Not oRst.EOF
strTo = strTo & oRst.Fields("ChampEmailClient") & "; "
oRst.MoveNext
Wend
'Supprime la dernière virgule
oMail.BCC = Left(strTo, Len(strTo) - 2)
oMail.Subject = "NewsLetter " & Date
'Envoi le mail
oMail.Send
'ferme le curseur
oRst.Close
Set oRst = Nothing
'Ferme Outlook
oApp.Quit
Set oApp = Nothing
End Sub |
Le Visual c'est pas trop mon truc mais je comprends à peu près l'idée.
J'aurais quand même quelques questions.
1- Est-ce que c'est bien de ce type de code dont j'ai besoin (on sait jamais)
2 - Est-ce que pour ne pas envoyer les mails à toute la table, mais seulement à ceux qui sont issus d'une requête il me suffit de remplacer la ligne
Set oRst = CurrentDb.OpenRecordset("SELECT * FROM Clients")
par le code de la requête ?
3 - Quel format doit avoir le champ contenant les adresses mails (lien hypertexte ou texte ?
4 - Je n'ai pas du tout compris comment on utilise ce code concrètement ??
Comme code sur click d'un bouton dans un formulaire ???
Voila, désolé pour ces questions de newbie mais parmi toutes mes recherches c'est ce code qui me semble le + approprié mais je n'arrive vraiment pas à l'utiliser.
Merci @+
Partager