Mail automatique changer le format d'écriture

Bonjour,

Je possède un programme qui envoi automatiquement des mails lorsque une date butoir est atteinte. Les informations de mes mails sont stockées dans des cellules qu'il s'agit du contenu ou des destinataires. J'aimerai donc savoir s'il est possible de mettre du texte en gras ou en couleur dans mes mails sachant que je tire mes informations de mes feuilles excels (je ne vois pas comment utiliser des balises comme </b> dans mon cas ).

Voici la partie de mon programme qui envoi le mail si ma date butoir est atteinte et le constituant le mail :

             For Each oCell In Worksheets("Commandes urgentes").UsedRange.Columns(cColJoursRestants).Cells
                  If oCell.Value <= cNbJoursRelance2 Then

                    If oCell.Offset(, cColMailEnvoi - cColJoursRestants).Value <> "Oui" Then
                      SendFollowUpMail Worksheets("Commandes urgentes"), oCell.Row

Cette partie envoie un mail s'il ne reste que 3 jours pour traiter la commande ( cNbJoursRelance2 = 15)

Sub SendFollowUpMail(zSheet As Excel.Worksheet, zRow As Long)
    Const cColMailList = 19
    Const cColMailBody = 20
    Const cSep = vbLf
    Const cMailItem = 0
    Dim oOL As Object
    Dim oMail As Object
    Dim oCell As Excel.Range

    Dim sRecipients As String
    Dim aRecipients() As String
    Dim sBody As String
    Dim i As Integer

    Set oCell = zSheet.Cells(zRow, cColMailList)
    sRecipients = oCell.Value
    Set oCell = zSheet.Cells(zRow, cColMailBody)
    sBody = oCell.Value

    If Len(sRecipients) > 0 And Len(sBody) > 0 Then
        On Error GoTo ErrorHandling
        Set oOL = CreateObject("Outlook.Application")
        Set oMail = oOL.CreateItem(cMailItem)
        With oMail

            aRecipients() = Split(Replace(sRecipients, cSep, ";"), ";")
            For i = 0 To UBound(aRecipients)
                .Recipients.Add aRecipients(i)
            Next
            .Subject = cSubject
            .Body = sBody
            .Send
        End With

        Set oCell = zSheet.Cells(zRow, cColMailEnvoi)
        oCell.Value = "Oui"
        oCell.Font.Bold = True
    End If
    GoTo Cleaning
ErrorHandling:
    Dim sMess As String
    sMess = "Erreur " & Err.Number & vbCrLf & vbCrLf _
        & Err.Description & vbCrLf & vbCrLf _
        & "Veuillez vérifier les adresses mails!"

    MsgBox sMess, vbCritical, "ERREUR MAIL"
    If Not oMail Is Nothing Then
        oMail.Display
    End If
Cleaning:

    Set oCell = Nothing
    Set oOL = Nothing
    Set oMail = Nothing

End Sub

Les colonnes 19 et 20 contiennent les adresses et le messages de mes mails.

Pensez-vous qu'il est possible de mettre des balises pour rendre mon texte gras et en couleur ?

J'ai également essayé de rédiger complètement mon mail sur ma macro mais sans succès

Devery

Bonjour,

Pour mettre le texte en gras/couleur/italique/souligné/etc. il faut passer en html :

remplace .Body par

.htmlbody = mon_texte & .htmlbody

et dans mon_texte, tu encadres la partie à mettre en exergue par

<i>___</i> pour italique

<b>____</b> pour bold = gras

<u>_____</u> pour souligné

<font color="red">_________</font> pour couleur rouge

voilà tu as l'essentiel, ne te fatigue pas avec les posts trop complexes !

un site d'ailleurs assez simple (même trop simple car plus d'actualité avec les css) mais pratique http://www.delprat.org/cours/police.htm

Bonjour,

Merci !

J'ai changé le format de mon body en HTML, à savoir :

sBody = "<b>" & oCell.Value & "</b>"

et

.HTMLBody = sBody

Ce qui me permet de mettre mon texte en gras en effet ! Cependant j'ai un problème avec le retour à la ligne, je tire tout le contenu de mon mail d'une seule cellule dont j'extrait les données, je ne peux donc pas séparer mon texte en plusieurs parties pour mettre en gras uniquement la date. Je sais qu'il faut utiliser les balises <br> pour cela, mais je ne peux pas mettre cela directement dans mon document excel je suppose ?

EDIT : Voici une image de la cellule qui contient toutes les données que j'affiche dans mon mail (Fichier capturef)

Comme vous pouvez le voir je fais appel à beaucoup de cellules différentes, je ne vois pas comment faire cela en écrivant directement mon mail sur ma macro.

capturef

Salut Devery,

Édit : Salut Steelson! J'ai mis un peu de temps à écrire mon message x)

J'aimerai donc savoir s'il est possible de mettre du texte en gras ou en couleur dans mes mails sachant que je tire mes informations de mes feuilles excels (je ne vois pas comment utiliser des balises comme </b> dans mon cas ).

C'est mieux de déclarer ton mail au format HTML du coup :

Dim a As MailItem
Set a = Outlook.CreateItem(olMailItem)
With a
    .To = "xxx@xxx.fr"                  'destinataire
    .Subject = "xxx"                    'Objet du mail
    .BodyFormat = olFormatHTML          'Type format du mail
    .Attachments.Add                    'Pièce jointe / signature
    .HTMLBody = "<HTML><body>" & _
                "<b>Texte en gras</b>" & _
                "<i>Texte en italic</i>" & _
                "<u>Texte souligné</u>" & _
                "saut de ligne <p>"
    .Send                               'envoyer le mail
End With

Restant à ta dispo si tu a des questions !

Cependant j'ai un problème avec le retour à la ligne

Pour un retour à ligne, insère cette balise <br/>

A noter : si tu fais .htmlbody = "bla bla bla & .htmlbody, tu récupères aussi ta signature en bas du mail

Bonjour Steelson,

Mon problème de retour à la ligne provient de ma page excel, j'ai toutes les informations qui proviennent d'un cellule sur excel (mon image sur mon poste précédent), je ne peux donc pas ajouter de balise sur mon VBA, vu que j'affiche uniquement le contenu de la cellule.

Est-il possible de mettre directement les balises dans la colonne contenant le messages sur ma feuille excel ?

Est-il possible de mettre directement les balises dans la colonne contenant le messages sur ma feuille excel ?

Bien sûr, mets les balises html dans ton texte dans la cellule même.

exemple

nota : le centrage excel et le retour à la ligne excel ne sont pas pris en compte.

remplace par <center>______</center>

et par <br/>

capture d ecran 304

Problème résolu !

Je ne pensais pas pouvoir mettre directement les balises HTML dans ma cellule, un grand merci à vous tous pour votre aide !

En vous souhaitant une bonne journée !

Cordialement,

Devery

Tu as aussi d'autres balises intéressantes :

<table><tr><td>_____________</td></tr></table>

pour créer un tableau de données dans ton mail.

Mais pas sûr que tout tienne dans une cellule excel, dans ce cas fais comme Juice en construisant dans VBA le texte du mail.

Enfin ... tu as une autre possibilité plus simple à mettre en oeuvre, mais plus pointue care elle nécessite de bien synchroniser outlook avec excel (d'où la tempo dans le VBA).

Tu écris dans un onglet le texte tel que tu voudrais le voir.

Tu fais un copier de ce texte.

Et tu fais un coller par envoi (sendkeys) dans outlook.

Voici un exemple.

Le rendu peut être davantage travaillé (images, couleurs, taille, tableaux ...)

Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object
Dim numero As Integer

On Error GoTo erreur

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = ""
        .Subject = "test envoi mail"
    End With

    Range("corpsdumail").Copy
    email.display
    Application.Wait (Now + TimeValue("0:00:01"))
    SendKeys "^v", True
    'Application.CutCopyMode = False

    Set email = Nothing
    Set messagerie = Nothing

Exit Sub

erreur:

    MsgBox "Erreur : " & Err.Number & vbLf & Err.Description

End Sub
Rechercher des sujets similaires à "mail automatique changer format ecriture"