Suite du sujet : VBA envoi mail Outlook avec signature
Bonjour à tous,
Suite à un post clôturé, j'ai pu apprendre à ajouter une signature Outlook à un mail envoyé depuis Excel :
https://forum.excel-pratique.com/excel/vba-envoi-mail-outlook-avec-signature-154985
J'aimerai ajouter une piste à un utilisateur bloqué dans ce post, Bruno M45.
Je suis nouveau sur le forum, je ne sais pas si je dois créer un nouveau post ou pas, n'hésitez pas à intégrer ma réponse ailleurs...
Bruno M45 n'arrivait pas à intégrer une image de sa signature Outlook, une icone en croix rouge apparaissait à la place.
J'ai eu le même soucis, et j'ai corrigé le tir en changeant simplement le nom de ma signature Outlook.
En fait, celle-ci contenait un espace, ce qui provoquait l'erreur dans la ligne de code :
Signature = Replace(Signature, nom_signature & "_fichiers/", Environ("APPDATA") & "\Microsoft\Signatures\" & nom_signature & "_fichiers/")Dans le fichier HTM de la signature, l'espace est écrit "%20", et non " ", d'où le problème.
En enlevant l'espace, ma signature s'affiche maintenant avec l'image.
J'espère que ça pourra aider quelqu'un d'autre !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Effectivement, grâce à ton retour, j'ai finalement compris d'où venait l'erreur que certains rencontraient pour l'affichage de l'image, ce à quoi sert cette instruction dans la fonction. Par ailleurs, cette instruction est spécifique à une version française. Pour une version en anglais, elle est :
Signature = Replace(Signature, nom_signature & "_files/", Environ("APPDATA") & "\Microsoft\Signatures\" & nom_signature & "_files/")Cela dit, il est plus commode d'insérer la signature dans un mail OutLook avec un ".Display" avant le ".Send" mais la fonction permet de choisir entre plusieurs signatures ou de l'insérer à l'endroit où on la souhaite.
De mon coté, le .Display avant le .Send ne m'intéresse pas, j'ai 6 adresses différentes dans mon Outlook, avec chacune des signatures différentes
Content que ça ait pu t'aider !
Je continue la discussion quelques semaines plus tard...
Mon Outlook a changé le format des fichiers de signature :
"Nom_De_La_Signature.htm" est devenu "Nom_De_La_Signature (Nom_Du_Compte).htm"
Ceci a pour impact de supprimer l'image de la signature, à cause de l'espace ajouté, qui se transforme en %20 dans le fichier HTM.
Pour palier à ce problème, j'ai modifié le code comme ceci :
If Err.Num = 0 Then
Signature_Du_Mail = TextStream.ReadAll
Nom_Signature_En_Pourcentage_20 = Replace(Nom_Signature, " ", "%20")
Signature_Du_Mail = Replace(Signature_Du_Mail, Nom_Signature_En_Pourcentage_20, Nom_Signature)
'remplacement adresse relative images par adresse absolue
Signature_Du_Mail = Replace(Signature_Du_Mail, Nom_Signature & "_fichiers/", Environ("APPDATA") & "\Microsoft\Signatures\" & Nom_Signature & "_fichiers/")
End IfCeci fait en sorte de transformer le "%20" du fichier htm en espace, et ainsi Outlook intègre bien l'image.
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Oui effectivement, la fonction d'affectation de la signature (si on ne veut pas utiliser ".Display" avant le ".Send") est devenue plus complexe selon la version d'Outlook.
En reprenant ta modification, la nouvelle fonction doit intégrer dans la dernière version d'Outlook (365 ou 2021), le nom du compte
Function Signature(nom_signature As String, Optional nom_compte As String) As String
Dim FSO As Object, TextStream As Object
Dim nom_fichier As String, id_signature As String, id_signature_Pct20 As String
On Error Resume Next
Set FSO = CreateObject("Scripting.FileSystemObject")
If nom_compte <> Empty Then id_signature = nom_signature & " (" & nom_compte & ")" _
Else id_signature = nom_signature
nom_fichier = Environ("APPDATA") & "\Microsoft\Signatures\" & id_signature & ".htm"
Set TextStream = FSO.OpenTextFile(nom_fichier)
If Err.Num = 0 Then
Signature = TextStream.ReadAll
id_signature_Pct20 = Replace(id_signature, " ", "%20")
Signature = Replace(Signature, id_signature_Pct20, id_signature)
'remplacement adresse relative images par adresse absolue
Signature = Replace(Signature, id_signature & "_fichiers/", Environ("APPDATA") & "\Microsoft\Signatures\" & id_signature & "_fichiers/")
End If
End Function