Ajouter une pièce jointe à un mail sur Access
Résolu
AstraLife
Messages postés
98
Date d'inscription
Statut
Membre
Dernière intervention
-
AstraLife Messages postés 98 Date d'inscription Statut Membre Dernière intervention -
AstraLife Messages postés 98 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Sur Access 2013/16
Je souhaite, dans un formulaire, à partir d'une liste déroulante, après avoir sélectionné la date charger un état (en PDF) en fonction de la date
et le joindre à un mail, le hic c'est que je passe par du code DAO pour préparer le mail (en fonction d'une requête ou se trouvent les contacts) et je n'arrive pas à y ajouter ma pièce jointe, (l'état chargé précédemment au format PDF).
Si quelqu'un pouvait me renseigner, grand merci.
Ci-joint le code du module et le code de lancement de la macro.
Code du Module =>
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
End Sub
Code d'appel de la macro =>
Private Sub LaTotale___Click()
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Me.LaTotale__, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Apperçu Bilan Lettre Départ")
Case vbYes
Call LaTotale
Case vbNo
'procédure si click sur Non
End Select
End Sub
Sur Access 2013/16
Je souhaite, dans un formulaire, à partir d'une liste déroulante, après avoir sélectionné la date charger un état (en PDF) en fonction de la date
et le joindre à un mail, le hic c'est que je passe par du code DAO pour préparer le mail (en fonction d'une requête ou se trouvent les contacts) et je n'arrive pas à y ajouter ma pièce jointe, (l'état chargé précédemment au format PDF).
Si quelqu'un pouvait me renseigner, grand merci.
Ci-joint le code du module et le code de lancement de la macro.
Code du Module =>
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
End Sub
Code d'appel de la macro =>
Private Sub LaTotale___Click()
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Me.LaTotale__, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Apperçu Bilan Lettre Départ")
Case vbYes
Call LaTotale
Case vbNo
'procédure si click sur Non
End Select
End Sub
A voir également:
- Access envoyer mail avec pièce jointe
- Pièce d'identité - Accueil - Services publics
- Gmail envoyer un mail - Guide
- 1 pièce jointe - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
9 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je pense qu'il suffit de faire
il me semble que tu ne donnes aucune information à propos de ce fichier à joindre.
je pense qu'il suffit de faire
MonMessage.Attachments.Add "nom complet du fichier"
il me semble que tu ne donnes aucune information à propos de ce fichier à joindre.
Bonjour yg_be, merci pour ta réponse,
effectivement dans le code il n'y a aucune info car justement je ne trouve pas quoi et ou insérer le code pour charger un état dans ce mail.
le code Attachement.add permet de joindre un fichier physiquement avec son chemin mais ne permet pas de joindre un état chargé situé dans la base Access.
En complément, ce que je cherche à faire,
Dans une base Access, à partir d'un formulaire, depuis une liste déroulante je choisie une date pour générer un état en PDF puis je souhaite l'envoyer par mail mais en fonction d'une requête ou sont situés les contacts.
effectivement dans le code il n'y a aucune info car justement je ne trouve pas quoi et ou insérer le code pour charger un état dans ce mail.
le code Attachement.add permet de joindre un fichier physiquement avec son chemin mais ne permet pas de joindre un état chargé situé dans la base Access.
En complément, ce que je cherche à faire,
Dans une base Access, à partir d'un formulaire, depuis une liste déroulante je choisie une date pour générer un état en PDF puis je souhaite l'envoyer par mail mais en fonction d'une requête ou sont situés les contacts.
Non,
Dans ma procédure j'arrive à ouvrir en mode aperçu l'état au début de la macro mais il ne se charge pas en pièce jointe pour le mail.
Je pense que c'est dans la partie d'initialisation du mail que je dois donner l'information d'y ajouter l'état en pièce jointe PDF mais étant un état à charger à partir d'une date choisie dans une liste déroulante ça coince
J'ai modifié le code avec l'état qui s'ouvre avant la préparation du mail
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date"), vbYesNo + vbQuestion, "Aperçu Bilan Lettre Départ")
Case vbYes
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production xxxx"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production xxxx"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne xxxx"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
Dans ma procédure j'arrive à ouvrir en mode aperçu l'état au début de la macro mais il ne se charge pas en pièce jointe pour le mail.
Je pense que c'est dans la partie d'initialisation du mail que je dois donner l'information d'y ajouter l'état en pièce jointe PDF mais étant un état à charger à partir d'une date choisie dans une liste déroulante ça coince
J'ai modifié le code avec l'état qui s'ouvre avant la préparation du mail
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date"), vbYesNo + vbQuestion, "Aperçu Bilan Lettre Départ")
Case vbYes
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production xxxx"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production xxxx"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne xxxx"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
j'ai essayé ça dans la partie prépa du mail mais ça plante
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview, acFormatPDF
MonMessage.acSendReport , "E42_BILAN_LD_Rech", acFormatPDF
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview, acFormatPDF
MonMessage.acSendReport , "E42_BILAN_LD_Rech", acFormatPDF
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
je suggère ceci:
'nom du fichier pdf temporaire nomfichier="%temp%\BILAN"&Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf" 'création du fichier pdf DoCmd.OutputTo acOutputReport, "42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier 'attacher le fichier pdf au message MonMessage.Attachments.Add nomfichier 'supprimer le fichier pdf après envoi du message kill(nomfichier)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour yg_be
j'ai incorporé ton morceau de code,
ça plante à cette ligne : MonMessage.Attachments.Add nomfichier
Erreur d'execution, fichier introuvable, verifiez que le chemin et le nom
sont corrects.
Cela me génère un fichier nommé 0 dans mes documents qui fait la même taille que le PDF que je souhaite mais il n'est pas au format PDF, je l'ai ouvert avec PDF Creator et les bonnes données sont bien dans se fichier nommé 0.
Je n'ai peut être pas mis le morceau de code au bon endroit,
Je te remet le code modifié
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date"), vbYesNo + vbQuestion, "Aperçu Bilan Lettre Départ")
Case vbYes
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
'nom du fichier pdf temporaire
nomfichier = "%temp%\BILAN" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
'création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
'attacher le fichier pdf au message
MonMessage.Attachments.Add nomfichier
'supprimer le fichier pdf après envoi du message
Kill (nomfichier)
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
j'ai incorporé ton morceau de code,
ça plante à cette ligne : MonMessage.Attachments.Add nomfichier
Erreur d'execution, fichier introuvable, verifiez que le chemin et le nom
sont corrects.
Cela me génère un fichier nommé 0 dans mes documents qui fait la même taille que le PDF que je souhaite mais il n'est pas au format PDF, je l'ai ouvert avec PDF Creator et les bonnes données sont bien dans se fichier nommé 0.
Je n'ai peut être pas mis le morceau de code au bon endroit,
Je te remet le code modifié
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date"), vbYesNo + vbQuestion, "Aperçu Bilan Lettre Départ")
Case vbYes
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
'nom du fichier pdf temporaire
nomfichier = "%temp%\BILAN" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
'création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
'attacher le fichier pdf au message
MonMessage.Attachments.Add nomfichier
'supprimer le fichier pdf après envoi du message
Kill (nomfichier)
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
pareil, cela me génère, dans mes documents, un fichier nommé 0 au format inconnu mais que je peut quand même ouvrir avec PDF créator pour visualiser le contenu.
Ca plante toujours à la ligne ci-dessous :
MonMessage.Attachments.Add nomfichier
fichier introuvable
Ca plante toujours à la ligne ci-dessous :
MonMessage.Attachments.Add nomfichier
fichier introuvable
ça coince ici
strPathAndFile = nomfichier
ça me donne dans mes documents un fichier nommé 0 de 450 ko (Taille correcte et données présentes) mais ce fichier n'est pas de type PDF
donc il plante après quand il cherche le PDF avec MonMessage.Attachments.Add nomfichier
strPathAndFile = nomfichier
ça me donne dans mes documents un fichier nommé 0 de 450 ko (Taille correcte et données présentes) mais ce fichier n'est pas de type PDF
donc il plante après quand il cherche le PDF avec MonMessage.Attachments.Add nomfichier
Cela plante à la ligne :
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, nomfichier
Erreur 2501
L'action outputto a été annulée
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "XXXX@free.fr"
' nom du fichier pdf temporaire
nomfichier = "%temp%\BILAN" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, nomfichier
' attacher le fichier pdf au message
MonMessage.Attachments.Add nomfichier
' supprimer le fichier pdf après envoi du message
Kill (nomfichier)
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, nomfichier
Erreur 2501
L'action outputto a été annulée
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "XXXX@free.fr"
' nom du fichier pdf temporaire
nomfichier = "%temp%\BILAN" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, nomfichier
' attacher le fichier pdf au message
MonMessage.Attachments.Add nomfichier
' supprimer le fichier pdf après envoi du message
Kill (nomfichier)
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.display
Case vbNo
'procédure si click sur Non
End Select
End Sub
Bonjour,
en mettant :
No ??
en mettant :
' nom du fichier pdf temporaire
nomfichier = %temp% &"\BILAN\" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
No ??
Bonjour,
Le problème est que cette commande " nom du fichier pdf temporaire" me génère un fichier nommé 0 dans mes documents mais pas de type pdf et donc ensuite ça plante à la ligne "MonMessage.Attachments.Add nomfichier" Ce chemin d'accès n'existe pas.
Je remet mon code complet
1. Le Module appelé "Email_LD"
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Aperçu Bilan Lettre Départ")
Case vbYes
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' nom du fichier pdf temporaire
nomfichier = "%temp% &\BILAN\" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.Attachments.Add nomfichier
MonMessage.display
' supprimer le fichier pdf après envoi du message
Kill (nomfichier)
Case vbNo
'procédure si click sur Non
End Select
End Sub
2. Le lancement de la macro
Private Sub LaTotale___Click()
Call LaTotale
End Sub
Le problème est que cette commande " nom du fichier pdf temporaire" me génère un fichier nommé 0 dans mes documents mais pas de type pdf et donc ensuite ça plante à la ligne "MonMessage.Attachments.Add nomfichier" Ce chemin d'accès n'existe pas.
Je remet mon code complet
1. Le Module appelé "Email_LD"
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
'MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Aperçu Bilan Lettre Départ")
Case vbYes
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' nom du fichier pdf temporaire
nomfichier = "%temp% &\BILAN\" & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & ".pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
' Préparation du message :
MonMessage.To = "xxxx@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.Attachments.Add nomfichier
MonMessage.display
' supprimer le fichier pdf après envoi du message
Kill (nomfichier)
Case vbNo
'procédure si click sur Non
End Select
End Sub
2. Le lancement de la macro
Private Sub LaTotale___Click()
Call LaTotale
End Sub
pour tester car sans la mention "strPathandfile" cela me demande ou enregistrer mon pdf
Je l'ai enlevé et donc ca me demande ou enregistrer mon pdf et si je le met dans un répertoire qui correspond à celui spécifié pour la pièce jointe ca fonctionne super.
Le seul problème est d'automatiser cette commande pour que l'utilisateur n'ai pas a renseigner le chemin ou l'on doit retrouver le pdf.
Je l'ai enlevé et donc ca me demande ou enregistrer mon pdf et si je le met dans un répertoire qui correspond à celui spécifié pour la pièce jointe ca fonctionne super.
Le seul problème est d'automatiser cette commande pour que l'utilisateur n'ai pas a renseigner le chemin ou l'on doit retrouver le pdf.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
suggestion:
c:\data\temp doit être un dossier existant et accessible.
nomfichier = "c:\data\temp\BILAN_" & Format(Now(), "yyyymmdd_hhnnss") & ".pdf"
c:\data\temp doit être un dossier existant et accessible.
J'ai fais des tests en plaçant directement un pdf nommé "BILAN_Lundi 2 Octobre 2017.pdf dans un répertoire crée sous ce nom c:\data\temp et ça fonctionne très bien il trouve la pièce jointe
Le problème vient du pdf généré à cette ligne :
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
Ce fichier nommé 0 tombe directement dans mon répertoire documents de windows.
Donc après il le trouve pas arrivée à cette ligne de code :
MonMessage.Attachments.Add nomfichier
Le problème vient du pdf généré à cette ligne :
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, strPathAndFile = nomfichier
Ce fichier nommé 0 tombe directement dans mon répertoire documents de windows.
Donc après il le trouve pas arrivée à cette ligne de code :
MonMessage.Attachments.Add nomfichier
Ca fonctionne, j'ai modifié comme suit
Me reste plus qu'à trouver comment y ajouter la signature de l'utilisateur.
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
' MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Aperçu Bilan Lettre Départ")
Case vbYes
' nom du fichier pdf temporaire
cheminfichier = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\E42_BILAN_LD_Rech.pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, cheminfichier
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "faby.laposte@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.Attachments.Add cheminfichier
MonMessage.display
' supprimer le fichier pdf après envoi du message
Kill (cheminfichier)
Case vbNo
' procédure si click sur Non
End Select
End Sub
Me reste plus qu'à trouver comment y ajouter la signature de l'utilisateur.
Option Compare Database
Sub LaTotale()
' #######################
' # 1. Access via DAO : #
' #######################
' MsgBox Oui + Non + icône Question
Select Case MsgBox("Vous allez charger le bilan de la journée de production du :" & Chr(13) & Chr(13) & " " & Format(Form_F_MENU_RT_LD_PRIMAIRE.BILANLD, "Long Date") & Chr(13) & Chr(13) & "Merci de patientez jusqu'à la fin du chargement.", vbYesNo + vbQuestion + vbSystemModal, "Aperçu Bilan Lettre Départ")
Case vbYes
' nom du fichier pdf temporaire
cheminfichier = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\E42_BILAN_LD_Rech.pdf"
' création du fichier pdf
DoCmd.OutputTo acOutputReport, "E42_BILAN_LD_Rech", acFormatPDF, cheminfichier
' Initialisation :
Dim ListeEMail As DAO.Recordset
Set ListeEMail = CurrentDb.OpenRecordset("R_EMAIL_LD")
ListeEMail.MoveFirst
ListeComplete = ""
' Parcourt de la requête :
While Not ListeEMail.EOF
ListeComplete = ListeComplete & ListeEMail("EMail") & ";"
ListeEMail.MoveNext
Wend
' On enlève le dernier point virgule :
' ListeComplete nous sera évidemment utile tout à l'heure :
ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
' Stop DAO :
ListeEMail.Close
Set ListeEMail = Nothing
' #######################################
' # 2. Envoi de l'E-Mail avec Outlook : #
' #######################################
' Initialisation :
Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.createitem(0)
' Préparation du message :
MonMessage.To = "faby.laposte@free.fr"
' Récupération de la chaîne d'E-Mails Access :
MonMessage.To = ListeComplete
MonMessage.Subject = "Bilan de production Lettre Départ"
Corps = "Bonsoir,"
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Ci-joint le Bilan de production Lettre Départ."
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & Chr(13) & Chr(10)
Corps = Corps & "Villeneuve-La-Garenne PIC - 92"
MonMessage.body = Corps
MonMessage.Attachments.Add cheminfichier
MonMessage.display
' supprimer le fichier pdf après envoi du message
Kill (cheminfichier)
Case vbNo
' procédure si click sur Non
End Select
End Sub