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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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...
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
 
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 !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
332
Réponses
2
Affichages
371
Réponses
6
Affichages
646
Réponses
2
Affichages
691
Réponses
4
Affichages
524
Réponses
7
Affichages
704
Retour