XL 2021 PUBLIPOSTAGE : Mise en forme du corps de message issu d'une cellule excel (VBA)

Minus&Cortex

XLDnaute Nouveau
Bonjour à tous,
J’ai trouvé et exploité ce bout de code permettant l’envoi par publipostage de mails et pièces-jointes personnalisés.
Il fait le job parfaitement.

Là ou je bloque est que j’aimerais pouvoir faire en sorte que le message reçu par les destinataires (issu de la colonne E) s’affiche en gras et en rouge (en html peut-être ??) dans leur messagerie.
Je n'y connais rien en VBA mais cela est-il intégrable dans mon code ?
Merci pour l'aide que vous voudrez bien m'apportez.

VB:
Sub Envoi_mails()
Dim sh As Worksheet

' Définir la feuille ou se trouve les données
Set sh = ThisWorkbook.Sheets("MA_BDD")
Dim i As Integer
Dim OA As Object
Dim msg As Object

' Créer une instance OUTLOOK
Set OA = CreateObject("outlook.application")
Dim last_row As Integer
last_row = Application.CountA(sh.Range("A:A"))

' Pas d'envoi si NON est sélectionné
For i = 2 To last_row
If sh.Range("H" & i).Value <> "Non" Then
Set msg = OA.CreateItem(0)

' Les COLONNES que l'on récupère pour l'envoi du message
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.Body = sh.Range("E" & i).Value

' Insertion PJ(1)
If sh.Range("F" & i).Value <> "" Then
msg.Attachments.Add sh.Range("F" & i).Value
End If

' Insertion PJ(2)
If sh.Range("G" & i).Value <> "" Then
msg.Attachments.Add sh.Range("G" & i).Value
End If
msg.Send

' Confirmation de message envoyé
sh.Range("I" & i).Value = "Envoyé"
End If
Next i
MsgBox "Messages Envoyés"

End Sub
 

Pièces jointes

  • __EXEMPLE.xlsm
    52.8 KB · Affichages: 3
Solution
Bonjour le fil et le forum,
il faut utiliser les balises html, voici un exemple où l'on peut changer le type de police, la couleur et la taille.
VB:
Sub Envoi_mails2()
'https://excel-downloads.com/threads/publipostage-mise-en-forme-du-corps-de-message-issu-dune-cellule-excel-vba.20084607/
    
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("MA_BDD")
    Dim i As Integer
    Dim OA As Object
    Dim msg As Object
    Dim strHTML As String

    ' Créer une instance OUTLOOK
    Set OA = CreateObject("outlook.application")
    Dim last_row As Integer
    last_row = Application.CountA(sh.Range("A:A"))

    ' Pas d'envoi si NON est sélectionné
    For i = 2 To last_row
        If sh.Range("H" & i).Value <> "Non" Then
            Set...

Sequoyah

XLDnaute Nouveau
Bonjour le fil et le forum,
il faut utiliser les balises html, voici un exemple où l'on peut changer le type de police, la couleur et la taille.
VB:
Sub Envoi_mails2()
'https://excel-downloads.com/threads/publipostage-mise-en-forme-du-corps-de-message-issu-dune-cellule-excel-vba.20084607/
    
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("MA_BDD")
    Dim i As Integer
    Dim OA As Object
    Dim msg As Object
    Dim strHTML As String

    ' Créer une instance OUTLOOK
    Set OA = CreateObject("outlook.application")
    Dim last_row As Integer
    last_row = Application.CountA(sh.Range("A:A"))

    ' Pas d'envoi si NON est sélectionné
    For i = 2 To last_row
        If sh.Range("H" & i).Value <> "Non" Then
            Set msg = OA.CreateItem(0)

            ' Balises HTML
            strHTML = "<html><body>"
            strHTML = strHTML & "<p style='font-family:Arial; font-size:14px; color:#0000FF;'>" & sh.Range("E" & i).Value & "</p>"
            strHTML = strHTML & "</body></html>"

            ' Les COLONNES que l'on récupère pour l'envoi du message
            With msg
                .To = sh.Range("A" & i).Value
                .CC = sh.Range("B" & i).Value
                .BCC = sh.Range("C" & i).Value
                .Subject = sh.Range("D" & i).Value
                .HTMLBody = strHTML
            End With

            ' Insertion PJ(1)
            If sh.Range("F" & i).Value <> "" Then
                msg.Attachments.Add sh.Range("F" & i).Value
            End If

            ' Insertion PJ(2)
            If sh.Range("G" & i).Value <> "" Then
                msg.Attachments.Add sh.Range("G" & i).Value
            End If
            msg.Send

            ' Confirmation de message envoyé
            sh.Range("I" & i).Value = "Envoyé"
        End If
    Next i
    MsgBox "Messages Envoyés"
End Sub
 

Minus&Cortex

XLDnaute Nouveau
Bonjour le fil et le forum,
il faut utiliser les balises html, voici un exemple où l'on peut changer le type de police, la couleur et la taille.
VB:
Sub Envoi_mails2()
'https://excel-downloads.com/threads/publipostage-mise-en-forme-du-corps-de-message-issu-dune-cellule-excel-vba.20084607/
   
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Sheets("MA_BDD")
    Dim i As Integer
    Dim OA As Object
    Dim msg As Object
    Dim strHTML As String

    ' Créer une instance OUTLOOK
    Set OA = CreateObject("outlook.application")
    Dim last_row As Integer
    last_row = Application.CountA(sh.Range("A:A"))

    ' Pas d'envoi si NON est sélectionné
    For i = 2 To last_row
        If sh.Range("H" & i).Value <> "Non" Then
            Set msg = OA.CreateItem(0)

            ' Balises HTML
            strHTML = "<html><body>"
            strHTML = strHTML & "<p style='font-family:Arial; font-size:14px; color:#0000FF;'>" & sh.Range("E" & i).Value & "</p>"
            strHTML = strHTML & "</body></html>"

            ' Les COLONNES que l'on récupère pour l'envoi du message
            With msg
                .To = sh.Range("A" & i).Value
                .CC = sh.Range("B" & i).Value
                .BCC = sh.Range("C" & i).Value
                .Subject = sh.Range("D" & i).Value
                .HTMLBody = strHTML
            End With

            ' Insertion PJ(1)
            If sh.Range("F" & i).Value <> "" Then
                msg.Attachments.Add sh.Range("F" & i).Value
            End If

            ' Insertion PJ(2)
            If sh.Range("G" & i).Value <> "" Then
                msg.Attachments.Add sh.Range("G" & i).Value
            End If
            msg.Send

            ' Confirmation de message envoyé
            sh.Range("I" & i).Value = "Envoyé"
        End If
    Next i
    MsgBox "Messages Envoyés"
End Sub
Magnifique, cela fonctionne. Merci !!
 

Statistiques des forums

Discussions
314 663
Messages
2 111 670
Membres
111 255
dernier inscrit
pascal.gib