Inserer une signature dans un mail envoyé par Excel 365
Bonjour,
j ai trouvé une vidéo qui répond exactement a mes attentes sauf qu'il manque la signature en bas de mail (logo de société + nom qui est stocké dans "signature de outlook)
https://www.youtube.com/watch?v=5edOkPMXIOE
j'ai mis le code VBA dans la cellule E2 comme indiqué, mais cela produit que du texte.
Comment dois je inserer ce bout de code
Merci
re,
vous pouvez créer votre propre signature(s), donc en VBA il ne faut plus prévoir quelque chose, vous envoyez un body ordinair (pas un HTMLBody)
Bonjour Breizh22P
Vous n'avez pas dû regarder le tuto, impossible
Il n'est pas indiqué de mettre son code VBA dans la colonne E, mais ses messages
Pour ce qui est de la signature, si elle est automatiquement affichée lorsque vous créez un mail, voici votre code modifé
Sub Envoi_mails()
Dim sh As Worksheet
Dim last_row As Integer
Dim i As Integer
Dim OA As Object, msg As Object
Set sh = ThisWorkbook.Sheets("Envoi mails")
' Vérifier si Outlook est ouvert
On Error Resume Next
Set OA = GetObject(, "Outlook.Application")
On Error GoTo 0
If OA Is Nothing Then Shell "Outlook.exe", vbMinimizedFocus
' Créer l'instance
Set OA = CreateObject("outlook.application")
last_row = Application.CountA(sh.Range("A:A"))
For i = 2 To last_row
If sh.Range("H" & i).Value <> "NON" Then
Set msg = OA.CreateItem(0)
' Afficher le mail pour afficher la signature
msg.display
'
msg.To = sh.Range("A" & i).Value
msg.CC = sh.Range("B" & i).Value
msg.BCC = sh.Range("C" & i).Value
msg.Subject = sh.Range("D" & i).Value
msg.HTMLBody = sh.Range("E" & i).Value
If sh.Range("F" & i).Value <> "" Then
msg.Attachments.Add sh.Range("F" & i).Value
End If
If sh.Range("G" & i).Value <> "" Then
msg.Attachments.Add sh.Range("G" & i).Value
End If
If sh.Range("H" & i).Value <> "" Then
msg.Attachments.Add sh.Range("H" & i).Value
End If
'msg.Send
sh.Range("I" & i).Value = "Envoyé"
' effacer l'objet pour le suivant
Set msg = Nothing
End If
Next i
MsgBox "Messages Envoyés"
End SubA+
Bonjour,
Merci pour ces réponses
J'ai bien une signature d'enregistrée dans outlook avec un logo.
j ai copier/coller le code. j ai 2 petites remarques
1 - C'est une suite de mail que j'envoie (un destinataire par ligne excel) et je ne veux pas que la boite mail s'ouvre, mais simplement que l'envoi soit fait directement a partir d'excel
2 - Après les lignes de texte du corps du mail, je voudrais que ma signature (logo de boite et mes coordonnées) soit mise. C'est pour ca que j'ai mis le code dans la cellule excel, c'est comme ca que s'était indiqué dans les commentaires, même si ca paraissait illogique
S'il y a une solution, je suis preneur
Re,
1 - C'est une suite de mail que j'envoie (un destinataire par ligne excel) et je ne veux pas que la boite mail s'ouvre, mais simplement que l'envoi soit fait directement a partir d'excel
Il suffit de réactiver le "Send" = enlever l'apostrophe devant msg.send
2 - Après les lignes de texte du corps du mail, je voudrais que ma signature (logo de boite et mes coordonnées) soit mise. C'est pour ca que j'ai mis le code dans la cellule excel, c'est comme ca que s'était indiqué dans les commentaires, même si ca paraissait illogique
Il faut concaténer le texte ajouté avec le corps du mail préalablement affiché
J'ai complété le code, pour transformer les retour à la ligne forcés (ALT+Entrée) de la cellule par la correspondance HTML
Voir code modifié
Sub Envoi_mails()
Dim sh As Worksheet
Dim OA As Object, msg As Object
Dim Last_Row As Long, Lig As Long
Dim TxtHtml As String
Set sh = ThisWorkbook.Sheets("Envoi mails")
' Vérifier si Outlook est ouvert
On Error Resume Next
Set OA = GetObject(, "Outlook.Application")
On Error GoTo 0
If OA Is Nothing Then Shell "Outlook.exe", vbMinimizedFocus
' Créer l'instance
Set OA = CreateObject("outlook.application")
Last_Row = Application.CountA(sh.Range("A:A"))
For Lig = 2 To Last_Row
' On passe à la ligne suivante si déjà envoyé
If sh.Range("I" & Lig).Value = "Envoyé" Then GoTo SuiteLig
' Vérifier siu mail à envoyer
If sh.Range("H" & Lig).Value <> "NON" Then
Set msg = OA.CreateItem(0)
' Afficher le mail pour afficher la signature
msg.display
' Préparer le mail et l'envoyer
msg.To = sh.Range("A" & Lig).Value
msg.CC = sh.Range("B" & Lig).Value
msg.BCC = sh.Range("C" & Lig).Value
msg.Subject = sh.Range("D" & Lig).Value
' Remplacer les sauts de ligne forcés d'Excel par la correspondance HTML
TxtHtml = Replace(sh.Range("E" & Lig), Chr(10), "<br>")
' Remplir le Body avec la signature
msg.HTMLBody = TxtHtml & msg.HTMLBody
' Pièce(s) jointe(s)
If sh.Range("F" & Lig).Value <> "" Then
msg.Attachments.Add sh.Range("F" & Lig).Value
End If
If sh.Range("G" & Lig).Value <> "" Then
msg.Attachments.Add sh.Range("G" & Lig).Value
End If
If sh.Range("H" & Lig).Value <> "" Then
msg.Attachments.Add sh.Range("H" & Lig).Value
End If
msg.Send
sh.Range("I" & Lig).Value = "Envoyé"
' effacer l'objet pour le suivant
Set msg = Nothing
End If
SuiteLig:
Next Lig
MsgBox "Messages Envoyés"
End SubA+