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)

https://support.microsoft.com/fr-fr/office/create-et-ajouter-une-signature-%C3%A9lectronique-dans-ou...

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 Sub

A+

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 Sub

A+

Rechercher des sujets similaires à "inserer signature mail envoye 365"