Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Automatiser l'envoi d'e-mails.

6 réponses
Avatar
abusada
Bonjour à toutes et à tous,

J'utilise actuellement un formulaire sous Access 97 pour envoyer par
e-mail un rapport à mes correspondants.

Je suis obligé de cliquer autant de fois qu'il y a d'e-mails à envoyer
car j'utilise la procédure suivante (insérée dans le détail de mon
formulaire) :

Dim DocName As String
Dim ToText As String
Dim BccText As String
Dim SubjectText As String
Dim EmailText As String
On Error Resume Next
ToText = Me![EMAIL]
If Err.Number = 94 Then ToText = ""
On Error Resume Next
CciText = Me![EMAIL CC]
If Err.Number = 94 Then ToText = ""
DocName = "Report"
SubjectText = "Your report."
EmailText = "As mentionned in the subject line, please the
enclosed file."
DoCmd.SendObject A_REPORT, DocName, A_FORMATRTF, ToText, CciText,
, SubjectText, EmailText, blnModif - False

Je souhaite automatiser l'envoi de ces e-mails. J'ai essayé une
fonction Do Loop mais celle tourne en rond...

Pourriez-vous m'aider ?

Je vous remercie d'avance,
Amicalement,

Michael

6 réponses

Avatar
Benoit Compoint
Bonjour Michael,

Pourriez-vous précisiez (en fournissant les lignes de code VBA que vous avez
essayées) ce que vous entendez par
"J'ai essayé une fonction Do Loop mais elle tourne en rond" ?.

De toute façon, si vous envoyez le même message à tous les destinataires, il
est préférable de concaténer leurs adresses email afin de n'envoyer le
message qu'une seule fois.

Benoît Compoint.

"Michael" wrote in message
news:
Bonjour à toutes et à tous,

J'utilise actuellement un formulaire sous Access 97 pour envoyer par
e-mail un rapport à mes correspondants.

Je suis obligé de cliquer autant de fois qu'il y a d'e-mails à envoyer
car j'utilise la procédure suivante (insérée dans le détail de mon
formulaire) :

Dim DocName As String
Dim ToText As String
Dim BccText As String
Dim SubjectText As String
Dim EmailText As String
On Error Resume Next
ToText = Me![EMAIL]
If Err.Number = 94 Then ToText = ""
On Error Resume Next
CciText = Me![EMAIL CC]
If Err.Number = 94 Then ToText = ""
DocName = "Report"
SubjectText = "Your report."
EmailText = "As mentionned in the subject line, please the
enclosed file."
DoCmd.SendObject A_REPORT, DocName, A_FORMATRTF, ToText, CciText,
, SubjectText, EmailText, blnModif - False

Je souhaite automatiser l'envoi de ces e-mails. J'ai essayé une
fonction Do Loop mais celle tourne en rond...

Pourriez-vous m'aider ?

Je vous remercie d'avance,
Amicalement,

Michael


Avatar
abusada
Benoît,

Tout d'abord, je tiens à vous remercier pour votre intérêt.

Le rapport que j'envoie est stocké dans une Table et chaque
destinataire ne reçoit qu'une portion de cette table.

Le code que j'ai essayé est le suivant :

1. Au début :

Dim MaTable As Recordset
Set MaTable = CurrentDB.OpenRecordset("Pull_E")
Do Until MaTable.EOF = True

2. A la fin

MaTable.MoveNext
Loop
MaTable.Close

Encore merci,
Michaël


"Benoit Compoint" wrote in message news:...
Bonjour Michael,

Pourriez-vous précisiez (en fournissant les lignes de code VBA que vous avez
essayées) ce que vous entendez par
"J'ai essayé une fonction Do Loop mais elle tourne en rond" ?.

De toute façon, si vous envoyez le même message à tous les destinataires, il
est préférable de concaténer leurs adresses email afin de n'envoyer le
message qu'une seule fois.

Benoît Compoint.


Avatar
rene
Il suffit de concaténer les mail avec un ; comme séparateur.

Cordialement.

rené.
Avatar
abusada
René,

Chaque destinataire reçoit une partie différente de la Table. Il y a
donc autant de messages différents qu'il y a de destinataires.

Or la concaténation permet d'envoyer le même message à plusieurs
destinataires, n'est-ce pas ?

Merci,
Amicalement,

Michaël
Avatar
Benoit Compoint
Bonjour Michaël,

La concaténation proposée par Réné enverrait effectivement le même message à
tous les destinataires.

Votre procédure VBA (boucle) me paraît correcte.
Cependant, dans la mesure du possible, il faut éviter l'usage de "On Error
Resume Next".
Dans votre cas il me paraît préférable de supprimer cette gestion d'erreur
en utilisant la fonction Nz qui permet de renvoyer une chaîne vide quand le
premier paramètre passé à Nz est Null.

L'affichage d'une demande de confirmation avant chaque envoi est normale si
vous avez installé Outlook 2002 ou Outlook 2000 avec un patch de sécurité
(par exemple Outlook 2000 SP3).


Benoît Compoint.

"Michael" wrote in message
news:
René,

Chaque destinataire reçoit une partie différente de la Table. Il y a
donc autant de messages différents qu'il y a de destinataires.

Or la concaténation permet d'envoyer le même message à plusieurs
destinataires, n'est-ce pas ?

Merci,
Amicalement,

Michaël


Avatar
abusada
Benoît,

Je vois le système préparer les rapports mais il n'envoie rien. Il
semblerait que la fonction Recordset n'arrive pas à récupérer les
champs de la requête Pull_E... Auriez-vous une suggestion ?

Concernant la fonction Nz, le système me refuse Nz(Destinataire Me![EMAIL], "") car il attend un =. Or il me semble que la fonction
est Nz(Valeur, Valeur si null). Une idée ?

Encore merci,

Michael



"Benoit Compoint" wrote in message news:...
Bonjour Michaël,

La concaténation proposée par Réné enverrait effectivement le même message à
tous les destinataires.

Votre procédure VBA (boucle) me paraît correcte.
Cependant, dans la mesure du possible, il faut éviter l'usage de "On Error
Resume Next".
Dans votre cas il me paraît préférable de supprimer cette gestion d'erreur
en utilisant la fonction Nz qui permet de renvoyer une chaîne vide quand le
premier paramètre passé à Nz est Null.

L'affichage d'une demande de confirmation avant chaque envoi est normale si
vous avez installé Outlook 2002 ou Outlook 2000 avec un patch de sécurité
(par exemple Outlook 2000 SP3).


Benoît Compoint.