Ajout d'une signature dans un mail sur Access 2013/2016

Résolu/Fermé
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019 - Modifié le 13 oct. 2017 à 11:15
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019 - 17 oct. 2017 à 11:44
Bonjour,

Sur Access, j'a une macro pour génerer un mail avec piece jointe,
Je souhaite y ajouter la signature de l'utilisateur qui envoie le mail.

J'ai essayé d'inserer ce genre de code mais je galère, je trouve beaucoup d'aide sur excel mais pas access

.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute


S'il quelqun pouvait m'orienter, merci par avance.



Mon Module complet :


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\E72_BILAN_LD_Rech.pdf"
   cheminfichier2 = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\B72_RETARD_BILAN_LD_Rech.pdf"
   cheminfichier3 = "U:\Public\3.Production\commun\organisation\Export_GPF_(ne pas modifier)\Tempo_EMAIL\E72_MACHINE_BILAN_LD_Rech.pdf"
   
   ' création du fichier pdf
   DoCmd.OutputTo acOutputReport, "E72_BILAN_LD_Rech", acFormatPDF, cheminfichier
   DoCmd.OutputTo acOutputReport, "B72_RETARD_BILAN_LD_Rech", acFormatPDF, cheminfichier2
   DoCmd.OutputTo acOutputReport, "E72_MACHINE_BILAN_LD_Rech", acFormatPDF, cheminfichier3
   
   ' 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 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.Attachments.Add cheminfichier2
   MonMessage.Attachments.Add cheminfichier3
   MonMessage.display vbSystemModal
   
   
   ' supprimer le fichier pdf après envoi du message
   Kill (cheminfichier)
   Kill (cheminfichier2)
   Kill (cheminfichier3)
   
   Case vbNo
   
   ' procédure si click sur Non
   End Select
   End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

4 réponses

thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
Modifié le 15 oct. 2017 à 19:45
Bonsoir,

Essayer ce code :

       
'Assignation des applications Outlook et de l'objet email
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.CreateItem(olMailItem)

With MonMessage
'....... remplissage adresse et objet
.To = ListeComplete
.Subject = "Bilan de production Lettre Départ"

'....... corps du message
corps = "Bonsoir,"
corps = corps & "<br/>" & "<br>"
corps = corps & "<br/>" & "<br>"
corps = corps & "Ci-joint le Bilan de production Lettre Départ."
corps = corps & "<br/>" & "<br>"
corps = corps & "<br/>" & "<br>"
corps = corps & "<br/>" & "<br>"
corps = corps & "Villeneuve-La-Garenne PIC - 92"
.HTMLBody = corps

'...... signature
.HTMLBody = .HTMLBody & "<br/>" & "<br>" & Signature("test99")

'....... pièces jointes
.Attachments.Add cheminfichier
.Attachments.Add cheminfichier2
.Attachments.Add cheminfichier3

'...... envoi
.Send
End With

Set MonOutlook = Nothing
Set MonMessage = Nothing

End Sub

Private Function Signature(nom_signature As String) As String
Dim FSO As Object, TextStream As Object
Dim nom_fichier As String

Signature = Empty
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
nom_fichier = Environ("APPDATA") & "\Microsoft\Signatures" & "\" & nom_signature & ".htm"
Set TextStream = FSO.OpenTextFile(nom_fichier)
If Err.Num = 0 Then Signature = TextStream.ReadAll

End Function


 
0
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019
16 oct. 2017 à 05:11
Bonjour Thev

Super !

Un grand merci à toi, j'ai inséré le code, et ça fonctionne parfaitement.
Juste une dernière question,
le logo de mon entreprise qui est dans la signature apparait avec une croix, est il possible d'y remédier ?

Merci encore pour ton aide.
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
16 oct. 2017 à 10:04
Bonjour Astralife,

Essayer cet ajout dans la fonction Signature :

Private Function Signature(nom_signature As String) As String
Dim FSO As Object, TextStream As Object
Dim nom_fichier As String

Signature = Empty
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
nom_fichier = Environ("APPDATA") & "\Microsoft\Signatures\" & nom_signature & ".htm"
Set TextStream = FSO.OpenTextFile(nom_fichier)
If Err.Num = 0 Then
Signature = TextStream.ReadAll
'remplacement adresse relative images par adresse absolue
Signature = Replace(Signature, nom_signature & "_files/", Environ("APPDATA") & "\Microsoft\Signatures\" & nom_signature & "_files/")
End If
End Function

0
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019
16 oct. 2017 à 10:52
Merci, je vais essayer,

Je reviens vers toi sur ta première aide, quand je t'ai dis que ça fonctionnait j'était chez moi, mais à mon travail cela ne fonctionne pas, je me demande si le chemin ou est enregistré la signature est le même que chez moi.
On travail sur des postes communs avec session donc je sais pas trop mais je pense que ça viens de la.
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
16 oct. 2017 à 11:58
Environ("APPDATA") correspond à "C:\Users\username\AppData\Roaming" où "C:\Users\username" est l'adresse où est stockée ton profil.
Si tu ne trouves pas la signature à l'adresse indiquée dans la fonction, cela signifie qu'elle n'est pas stockée dans ton profil mais dans un profil générique à déterminer : C:\Users\nom_générique\AppData\Roaming

Le plus simple est certainement de stocker cette signature dans ton profil.
0
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019
16 oct. 2017 à 19:50
Bonsoir Thev,

Merci pour tes réponses,

Effectivement à mon travail c'est des identifiants,
du style C:\Users\PZER001\

Donc je ne peux pas décrire le répertoire de la signature car la macro peut être lancé sur n'importe quel poste de l'entreprise et d'utilisateur différent suivant leur identifiant de session. Ou il faudrait que je leurs configure un répertoire, mais c'est trop lourd à gérer avec le nombre de poste à faire.

Merci encore pour ton aide.
0
yg_be Messages postés 22691 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 avril 2024 1 471 > AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019
16 oct. 2017 à 20:23
bonjour, je pense que le code va trouver le bon répertoire, mais pas le bon nom de fichier signature.
par exemple, un utilisateur aura sa signature dans le fichier
C:\Users\PZER001\AppData\Roaming\Microsoft\Signatures\signature.htm
tandis qu'un autre aura sa signature dans le fichier
C:\Users\ABCD045\AppData\Roaming\Microsoft\Signatures\jesigne.htm
Il est facile de retrouver le bon dossier, mais comment retrouver le bon nom de fichier de chacun?
0
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019 > yg_be Messages postés 22691 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 avril 2024
Modifié le 17 oct. 2017 à 08:32
Dans le répertoire AppData je ne trouve pas le fichier de la signature, surtout des profils outlook et des fichiers en extension XML,
0
thev Messages postés 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
Modifié le 17 oct. 2017 à 09:36
Il est possible que la signature soit gérée dynamiquement dans le serveur Exchange via une règle de transport dans Active Directory auquel cas elle ne peut pas évidemment figurer dans le profil des utilisateurs.

 
0
AstraLife Messages postés 98 Date d'inscription lundi 2 octobre 2017 Statut Membre Dernière intervention 1 juillet 2019
17 oct. 2017 à 11:44
Justement on a beaucoup d’utilisateur exhange maintenant donc je pense que le mieux c’est que l’utilsateur ajoute sa signature a la fin car trop de cas a gerer et c’est vrai que sur outlook 2013 il suffit de cliquer sur ajouter signature je voulais pousser a fond l’automatisation mais bon y a des limites
0