Ajouter une pièce te à 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 - 9 oct. 2017 à 19:40
AstraLife Messages postés 98 Date d'inscription Statut Membre Dernière intervention - 9 oct. 2017 à 19:40
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 dre à un mail, le hic c'est que je e par du code DAO pour préparer le mail (en fonction d'une requête ou se trouvent les s) et je n'arrive pas à y ajouter ma pièce te, (l'état chargé précédemment au format PDF).
Si quelqu'un pouvait me renseigner, grand merci.
Ci-t 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 = "[email protected]"
' 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-t 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 dre à un mail, le hic c'est que je e par du code DAO pour préparer le mail (en fonction d'une requête ou se trouvent les s) et je n'arrive pas à y ajouter ma pièce te, (l'état chargé précédemment au format PDF).
Si quelqu'un pouvait me renseigner, grand merci.
Ci-t 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 = "[email protected]"
' 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-t 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 te
- 1 pièce te - Guide
- Astuces et Solutions
- Publipostage mail - Accueil - Word
- Pièce d'identité - Accueil - Services publics
- Gmail envoyer un mail - Guide
9 réponses
bonjour,
je pense qu'il suffit de faire
il me semble que tu ne donnes aucune information à propos de ce fichier à dre.
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 à dre.
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 dre un fichier physiquement avec son chemin mais ne permet pas de dre 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 s.
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 dre un fichier physiquement avec son chemin mais ne permet pas de dre 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 s.
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 te 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 te 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 = "[email protected]"
' 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-t 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 te 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 te 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 = "[email protected]"
' 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-t 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 = "[email protected]"
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview, acFormatPDF
MonMessage.acSendReport , "E42_BILAN_LD_Rech", acFormatPDF
' Préparation du message :
MonMessage.To = "[email protected]"
DoCmd.OpenReport "E42_BILAN_LD_Rech", acViewPreview, acFormatPDF
MonMessage.acSendReport , "E42_BILAN_LD_Rech", acFormatPDF
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 = "[email protected]"
'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-t 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 = "[email protected]"
'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-t 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 = "[email protected]"
' 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-t 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 = "[email protected]"
' 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-t 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 = "[email protected]"
' 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-t 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 = "[email protected]"
' 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-t 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 te 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 te 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.
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 te
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 = "[email protected]"
' 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-t 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 = "[email protected]"
' 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-t 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