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

Emailing d'états paramétrés

9 réponses
Avatar
David
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes commerciaux
à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la liste
des clients de chaque commercial. ma question est de savoir comment je
passe les paramètres dans le code de sorte que chaque commerciaux
revoivent leur liste clients respective ?

Merci pour vos lumières

D.

9 réponses

Avatar
Georges
Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne peux pas
le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les objets
qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code VBA,
Menu Outils, Référence, puis sélectionner la librairie Microsoft Outlook
10.0 Object Library. (fichier se trouve normalement dans : C:Program
FilesMicrosoft OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des objets de
type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des emails
avec des fichiers attachés: Seulement comme tu utilise Outlook, tu as besoin
d'une autorisation de l'utilisateur 'Permettre l'acès pendant 1, 2, ...
10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'================================================================================================== Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional mail_Cc,
Optional FilePath, Optional OpenAndCloseOutl = True) As Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il y a eu
un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'==================================================================================================

"David" a écrit dans le message de
news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes commerciaux à
partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP, strDest,
, , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la liste des
clients de chaque commercial. ma question est de savoir comment je passe
les paramètres dans le code de sorte que chaque commerciaux revoivent leur
liste clients respective ?

Merci pour vos lumières

D.




Avatar
David
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne peux pas
le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les objets
qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code VBA,
Menu Outils, Référence, puis sélectionner la librairie Microsoft Outlook
10.0 Object Library. (fichier se trouve normalement dans : C:Program
FilesMicrosoft OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des objets de
type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des emails
avec des fichiers attachés: Seulement comme tu utilise Outlook, tu as besoin
d'une autorisation de l'utilisateur 'Permettre l'acès pendant 1, 2, ...
10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'================================================================================================== > Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional mail_Cc,
Optional FilePath, Optional OpenAndCloseOutl = True) As Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il y a eu
un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'================================================================================================== >

"David" a écrit dans le message de
news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes commerciaux à
partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP, strDest,
, , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la liste des
clients de chaque commercial. ma question est de savoir comment je passe
les paramètres dans le code de sorte que chaque commerciaux revoivent leur
liste clients respective ?

Merci pour vos lumières

D.








Avatar
Fabien
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne
peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code
VBA, Menu Outils, Référence, puis sélectionner la librairie Microsoft
Outlook 10.0 Object Library. (fichier se trouve normalement dans :
C:Program FilesMicrosoft OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des objets
de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise Outlook,
tu as besoin d'une autorisation de l'utilisateur 'Permettre l'acès
pendant 1, 2, ... 10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il y
a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de savoir
comment je passe les paramètres dans le code de sorte que chaque
commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace a la
commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la table
des commerciaux.
@+



Avatar
David
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne
peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code
VBA, Menu Outils, Référence, puis sélectionner la librairie
Microsoft Outlook 10.0 Object Library. (fichier se trouve normalement
dans : C:Program FilesMicrosoft OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des
objets de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise
Outlook, tu as besoin d'une autorisation de l'utilisateur 'Permettre
l'acès pendant 1, 2, ... 10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il y
a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en
Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de savoir
comment je passe les paramètres dans le code de sorte que chaque
commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace a la
commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la table
des commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la relation
entre le destinataire et la requête qui fera qu'il recevra bien SA liste
clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré ta
ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl
employés] where [code employé]=" & [code employé]

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP, , ,
"Votre liste Clients", strMsg, True
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.




Avatar
Georges
Hello!!

Cette relation c'est TOI qui dois la faire!!
Ce n'est pas une question de code, mais plus une question de structure de
données, de ta base relationnelle!

Comme je vois la chose selon ce que tu montres...
Tu as une table [tbl_employés]
et tu as une autre table de type de document p.ex [Document]

Le règle de gestion de ces deux tables sont les suivante:
et un employer peut recevoir 1 ou N document
et un document peut etre envoyé à 1 ou N employé

Alors tu dois avoir une table intérmédiaire qui combine les identifiants de
chauqe table. ID_Employé et ID_Document.
et tu pourras ainsi voir qui recoit quoi, ou inversément quoi est envoyé à
qui!

et si tu veux faire qu'un employé ne recoit qu'un seul document, alors, tu
n'auras pas besoin de table intermédiaire! seulement, il faudra faire le
lien entre ces deux table en insérant ID_Document dans la table
[tbl_employés]

... si c'est pas clair, il faudrais que tu lise une introduction sur les
bases de données...

"David" a écrit dans le message de
news: 47a304bc$0$16999$
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne
peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les objets
qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code
VBA, Menu Outils, Référence, puis sélectionner la librairie Microsoft
Outlook 10.0 Object Library. (fichier se trouve normalement dans :
C:Program FilesMicrosoft OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des objets
de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise Outlook,
tu as besoin d'une autorisation de l'utilisateur 'Permettre l'acès
pendant 1, 2, ... 10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'================================================================================================== >>>> Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As
Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il y a
eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en Copie
à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier
attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'================================================================================================== >>>>

"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la liste
des clients de chaque commercial. ma question est de savoir comment je
passe les paramètres dans le code de sorte que chaque commerciaux
revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace a la
commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la table des
commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la relation
entre le destinataire et la requête qui fera qu'il recevra bien SA liste
clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré ta
ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl employés]
where [code employé]=" & [code employé]

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP, , ,
"Votre liste Clients", strMsg, True
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.







Avatar
Fabien
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne
peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de code
VBA, Menu Outils, Référence, puis sélectionner la librairie
Microsoft Outlook 10.0 Object Library. (fichier se trouve
normalement dans : C:Program FilesMicrosoft
OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des
objets de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise
Outlook, tu as besoin d'une autorisation de l'utilisateur 'Permettre
l'acès pendant 1, 2, ... 10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As
Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il
y a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en
Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier
attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de savoir
comment je passe les paramètres dans le code de sorte que chaque
commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace a
la commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la table
des commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la relation
entre le destinataire et la requête qui fera qu'il recevra bien SA liste
clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré ta
ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl
employés] where [code employé]=" & rst("code employé")
Petite correction ici --------------^

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,rst("Email") , ,
"Votre liste Clients", strMsg, True
et ici ------------------------------------------------------------^

rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.

Voilà :-)






Avatar
David
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur) la
liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu ne
peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de
code VBA, Menu Outils, Référence, puis sélectionner la librairie
Microsoft Outlook 10.0 Object Library. (fichier se trouve
normalement dans : C:Program FilesMicrosoft
OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des
objets de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise
Outlook, tu as besoin d'une autorisation de l'utilisateur
'Permettre l'acès pendant 1, 2, ... 10minutes d'avoir accès à Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As
Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si il
y a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email
envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en
Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier
attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de savoir
comment je passe les paramètres dans le code de sorte que chaque
commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace a
la commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la table
des commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la relation
entre le destinataire et la requête qui fera qu'il recevra bien SA
liste clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré ta
ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl
employés] where [code employé]=" & rst("code employé")
Petite correction ici --------------^

DoCmd.SendObject acSendreport, "rpt liste clients",
acFormatSNP,rst("Email") , , "Votre liste Clients", strMsg, True
et ici ------------------------------------------------------------^

rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.

Voilà :-)

Un grand Merci à tous les deux, je vais tester :-)


D.






Avatar
David
Merci Geroges pour le code, je le garde sous le coude mais mon vrai
problème c'est de savoir comment faire pour filtrer (par vendeur)
la liste client et d'envoyer par mail la bonne liste au bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu
ne peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de
code VBA, Menu Outils, Référence, puis sélectionner la librairie
Microsoft Outlook 10.0 Object Library. (fichier se trouve
normalement dans : C:Program FilesMicrosoft
OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des
objets de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise
Outlook, tu as besoin d'une autorisation de l'utilisateur
'Permettre l'acès pendant 1, 2, ... 10minutes d'avoir accès à
Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt, Optional
mail_Cc, Optional FilePath, Optional OpenAndCloseOutl = True) As
Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si
il y a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email
envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en
Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier
attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de savoir
comment je passe les paramètres dans le code de sorte que chaque
commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace
a la commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la
table des commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la relation
entre le destinataire et la requête qui fera qu'il recevra bien SA
liste clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré ta
ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl
employés] where [code employé]=" & rst("code employé")
Petite correction ici --------------^

DoCmd.SendObject acSendreport, "rpt liste clients",
acFormatSNP,rst("Email") , , "Votre liste Clients", strMsg, True
et ici ------------------------------------------------------------^

rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.

Voilà :-)

Un grand Merci à tous les deux, je vais tester :-)


D.


glups !
j'ai essayé mais access me dit :

"la méthode 'connection' de l'objet '_currentproject' a échoué"

J'ai vérifié dans les référence et j'ai bien Microsoft ActiveX Data
Objects 2.x Library de coché

J'ai même installé le MDAC mais rien y fait

quelqu'un a t il une idée ?







Avatar
David
Merci Geroges pour le code, je le garde sous le coude mais mon
vrai problème c'est de savoir comment faire pour filtrer (par
vendeur) la liste client et d'envoyer par mail la bonne liste au
bon vendeur.


Hello!

Pour envoyer un fichier joint extérieur à ta base de données, tu
ne peux pas le faire avec la linge de commande SendObject.
Tu peux importer la librairie d'Office Outlook et jouer avec les
objets qu'offre cette librairie.

Pour importer cette librairie, il faut aller dans la fenêtre de
code VBA, Menu Outils, Référence, puis sélectionner la librairie
Microsoft Outlook 10.0 Object Library. (fichier se trouve
normalement dans : C:Program FilesMicrosoft
OfficeOffice10msoutl.olb)

puis créer ta propre procédure d'envoie d'email et déclarer des
objets de type Outlook.MailItem...
J'ai fait il y a longtemps une procédure générique qui envoie des
emails avec des fichiers attachés: Seulement comme tu utilise
Outlook, tu as besoin d'une autorisation de l'utilisateur
'Permettre l'acès pendant 1, 2, ... 10minutes d'avoir accès à
Outlook'

Bonne chance!

Voici la procédure:
'===================================================================================================

Function SendHiddenEmail(mail_To, mail_Subject, mail_Txt,
Optional mail_Cc, Optional FilePath, Optional OpenAndCloseOutl =
True) As Boolean
On Error GoTo errHandeler
'Envoie un email avec les parametres reçus, retourne False si
il y a eu un probleme
Dim objOutlookMsg As Outlook.MailItem, objOutlookRecip As
Outlook.Recipient, objOutlookAttach As Outlook.Attachment

If OpenAndCloseOutl Then OpenOutlook LeaveOutlOpen
Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

With objOutlookMsg
Set objOutlookRecip = .Recipients.Add(mail_To) 'email
envoyé à
objOutlookRecip.Type = olTo
If Not IsMissing(mail_Cc) Then 'email en
Copie à
Set objOutlookRecip = .Recipients.Add(mail_Cc)
objOutlookRecip.Type = olCC
End If
.Subject = mail_Subject
.Body = mail_Txt
If Not IsMissing(FilePath) Then 'Fichier
attaché
Set objOutlookAttach = .Attachments.Add(FilePath)
End If
For Each objOutlookRecip In .Recipients
objOutlookRecip.Resolve
If Not objOutlookRecip.Resolve Then
objOutlookMsg.Display
Next
End With
'Envoyer l'email en tant que mail sécurisé
Set objSafeMail = CreateObject("Redemption.SafeMailItem")
objSafeMail.Item = objOutlookMsg
objSafeMail.Send
SendHiddenEmail = True

EndProcess:
If Not LeaveOutlOpen And OpenAndCloseOutl Then
objOutlook.Quit
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End If
Exit Function

errHandeler:
SendHiddenEmail = False
GoTo EndProcess
End Function
'===================================================================================================



"David" a écrit dans le
message de news: 47a21afc$0$8311$
Bonsoir tout le monde

J' envoi par mail la liste des clients actualisée à tous mes
commerciaux à partir de la table employés.

Pour cela pas de souci je passe par :

DoCmd.SendObject acSendreport, "rpt liste clients", acFormatSNP,
strDest, , , strSujet, strMsg, True

maintenant je souhaite faire un mailing avec en fichier joint la
liste des clients de chaque commercial. ma question est de
savoir comment je passe les paramètres dans le code de sorte que
chaque commerciaux revoivent leur liste clients respective ?

Merci pour vos lumières

D.





Salut,


Si ton état est alimenté par une requete, tu modifie celle-ci grace
a la commande
currentdb.querydefs("Larequete").sql="select * from table where
[codecom]=" & [lecodecom]

Je ne sais pas comment tu selectionnes tes commerciaux.
Par liste simple ou multi-choix ou directement en partant de la
table des commerciaux.
@+


Salut Fabien,

Merci pour ta réponse !
Mais je n'arrive pas à comprendre comment access va faire la
relation entre le destinataire et la requête qui fera qu'il recevra
bien SA liste clients.

pourrais tu me donner ton avis sur ce bout de code (j'y ai intégré
ta ligne) .

Public Sub Emailing()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strMsg As String

Set cnn = CurrentProject.Connection
Set rst = New ADODB.Recordset
rst.Open "SELECT * FROM [tbl employés] WHERE [classe
employés]="commercial" and Not Isnull(Email);", cnn
While Not rst.EOF
....
'ta ligne de code
currentdb.querydefs("rqt liste clients").sql="select * from [tbl
employés] where [code employé]=" & rst("code employé")
Petite correction ici --------------^

DoCmd.SendObject acSendreport, "rpt liste clients",
acFormatSNP,rst("Email") , , "Votre liste Clients", strMsg, True
et ici ------------------------------------------------------------^

rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set cnn = Nothing

End Sub

Merci par avance

D.

Voilà :-)

Un grand Merci à tous les deux, je vais tester :-)


D.


glups !
j'ai essayé mais access me dit :

"la méthode 'connection' de l'objet '_currentproject' a échoué"

J'ai vérifié dans les référence et j'ai bien Microsoft ActiveX Data
Objects 2.x Library de coché

J'ai même installé le MDAC mais rien y fait

quelqu'un a t il une idée ?



une réinstall de MDAC 2.8 à résolu le problème.