IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Problème de saut de ligne mail en HTML


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Problème de saut de ligne mail en HTML
    Bonjour à tous,

    J'utilise une macro VBA dans outlook pour ajouter un tableau de suivi dans le corps du mail.
    La macro ajoute le texte "Bonjour," et 3 sauts de ligne, puis ajoute le tableau de suivi.
    Le texte original du mail est conservé et ajouté ensuite.

    Voici la macro simplifiée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    Sub Tableau_auto_multi_selection_Simplifié()
     
        Dim oitem As Outlook.MailItem
        Dim corps_mail_HTML As String
        Dim test_corps_mail As String
        Dim texte_auto As String
        Dim individualItem As Object 'liste des mail séléctionnés
        Dim couleur_fond As String
        Dim affectation As String
        Dim x As String
        Dim recherche_tableau As Double
     
        On Error Resume Next
     
        If ActiveInspector.CurrentItem Is Nothing Then
     
            For Each individualItem In Application.ActiveExplorer.Selection
                individualItem.Display
                Set oitem = ActiveInspector.CurrentItem
                On Error GoTo 0
     
                corps_mail_HTML = oitem.HTMLBody
                test_corps_mail = oitem.Body
     
                'gestion des couleurs
                couleur_fond = "#bfbfbf" 'gris
     
                'controle si tableau déjà présent et ajoute tableau si non présent
                recherche_tableau = InStr(1, test_corps_mail, "Action 1", vbBinaryCompare) 'recherche du tableau et renvoie la position dans le string
                If recherche_tableau = 0 Then
     
     
                    'tableau de suivi au format HTML
     
                texte_auto = " <style> " & _
                    ".greeting-text { font-family: Calibri; font-size: 11pt; margin-bottom: 0;} " & _
                    ".mail-body { margin-bottom: 0; }" & _
                    ".table-class { border-collapse: collapse; margin-top: 0px; } " & _
                    ".table-class td { border:1px solid #000000; width: 75px; height: auto; text-align: center; vertical-align: middle; font-weight: normal;} " & _
                    ".table-class td.premiere_ligne { text-align: center; background:" & couleur_fond & "; width: 75px; font-weight: normal; } " & _
                    ".table-class td.premiere_col { text-align: center; background:" & couleur_fond & "; width: 75px; font-weight: normal; } " & _
                    ".table-class th { text-align: center; background: " & couleur_fond & "; border:1px solid #000000; width: 111px; height: 30px; text-align: center; vertical-align: middle;font-weight: normal; } " & _
                    "</style>" & _
                    "<div class='greeting-text mail-body'>Bonjour,<br><br><br><br></div>" & _
                    "<table class='table-class'>" & _
                    "<tr><th class='premiere_ligne'>Action 1</th>" & _
                    "<th>Action 2</th>" & _
                    "<th>Action 3</th>" & _
                    "<th>Action 4</th>" & _
                    "<th>Action 5</th>" & _
                    "<th>Action 6</th>" & _
                    "<th>Commentaires</th>" & _
                    "</tr><tr><td class='premiere_col'>Fait</td>" & _
                    "<td> </td><td> </td><td> </td><td> </td><td> </td><td> </td>" & _
                    "</tr><tr><td class='premiere_col'>Date</td>" & _
                    "<td> </td><td> </td><td> </td><td> </td><td> </td><td> </td></tr></table>"
     
     
                    oitem.HTMLBody = texte_auto & corps_mail_HTML
                End If
     
                'sauvegarde et fermeture
                oitem.Save
                oitem.Close olDiscard
            Next
        End If
     
    End Sub
    Une fois la macro exécutée et le tableau ajouté, je souhaite ajouter du texte entre le "Bonjour," et le tableau manuellement.
    Hors, lorsque j'ajoute du texte et j’appuie sur "Entrée" cela créer un espacement après le paragraphe. Je souhaiterais que la touche entrée saute une ligne et garde "les lignes collées".

    Je pense que la solution est au niveau du code HTML que je ne maitrise pas. (j'ai essayé le "margin-bottom: 0;" sans succès après modification manuelle du corps du mail)
    Si quelqu'un peux m'aiguiller sur une solution ça serait parfait

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    Novembre 2021
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Novembre 2021
    Messages : 18
    Points : 19
    Points
    19
    Par défaut
    Désolé de ne pas pouvoir vraiment t'aider...
    Cela me semble effectivement un problème de codage HTML: le forum n'est surement pas le bon...
    De toute façon, il serait utile qu'une fois modifié à la main ton mail, tu nous postes le code HTML résultant. On y vera plus clair.
    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse.

    Si je je ne mets qu'un seul <br> après le "Bonjour,", lorsque je fais "entrée" lors de la modification du mail, les sauts de lignes sont bien collés.
    S’il y a plusieurs <br>, il faut faire shift+entrée pour avoir le même résultat visuel.

    Mon objectif : avoir plusieurs <br> avec les macros pour pouvoir compléter le mail directement, et que la touche entrée fasse le même résultat que shift+entrée.

    Voici le code du mail après modification manuelle avec la touche "entrée" fonctionnelle (un seul "<br>" initial)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </o:shapelayout></xml><![endif]--></head><body lang=FR link="#0563C1" vlink="#954F72" style='tab-interval:35.4pt;word-wrap:break-word'><div class=WordSection1><div><p class=MsoNormal>Bonjour,</p><p class=MsoNormal><span style='font-size:11.0pt'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt'>Ok<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt'>Ok<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt'><o:p>&nbsp;</o:p></span></p></div><table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0 style='border-collapse:collapse;mso-yfti-tbllook:1184'><tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:22.5pt'><td width=111 style='width:83.25pt;border:solid black 1.0pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 1</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 2</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 3</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 4</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 5</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Action 6</span></p></td><td width=111 style='width:83.25pt;border:solid black 1.0pt;border-left:none;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt;height:22.5pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Commentaires</span></p></td></tr><tr style='mso-yfti-irow:1'><td width=75 style='width:56.25pt;border:solid black 1.0pt;border-top:none;mso-border-top-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Fait</span></p></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td></tr><tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'><td width=75 style='width:56.25pt;border:solid black 1.0pt;border-top:none;mso-border-top-alt:solid black .75pt;mso-border-alt:solid black .75pt;background:#BFBFBF;padding:.75pt .75pt .75pt .75pt'><p class=MsoNormal align=center style='text-align:center'><span style='color:black;mso-color-alt:windowtext'>Date</span><span style='font-size:11.0pt'><o:p></o:p></span></p></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td><td width=75 style='width:56.25pt;border-top:none;border-left:none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:solid black .75pt;mso-border-left-alt:solid black .75pt;mso-border-alt:solid black .75pt;padding:.75pt .75pt .75pt .75pt'></td></tr></table><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US'>Bonjour,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;mso-fareast-font-family:Calibri;mso-fareast-language:EN-US'>Ceci est le mail d'origine.<o:p></o:p></span></p>
    Il y a eu un mail d'origine, puis un ajout de tableau avec la macro, puis ajout des sauts de ligne et des 2 "ok"

  4. #4
    Membre actif Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 754
    Points : 200
    Points
    200
    Par défaut
    Hello,

    J'ai le même problème que vous

    Ce problème est également présent l'orque l'on ajoute des puces ou une liste de numéro

    Très intéressé par la solution

    Meilleures salutations

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour goninph,
    Je n'ai toujours pas trouvé la solution.
    La piste des puces peut peut être permettre de trouver d'autres personnes qui ont eu ce soucis.

    Voici un code VBA qui fonctionne pour l'ajout des puces sans sauts de ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub AjouterListeAPucesDansCorpsMail()
        Dim objMail As Outlook.MailItem
        Dim objSel As Outlook.Selection
        Dim objDoc As Word.Document
        Dim strHTML As String
     
        ' Vérifie si un e-mail est sélectionné
        If Application.ActiveExplorer.Selection.Count = 0 Then
            MsgBox "Aucun e-mail sélectionné.", vbExclamation
            Exit Sub
        End If
     
        ' Récupère l'e-mail sélectionné
        Set objSel = Application.ActiveExplorer.Selection
        Set objMail = objSel.Item(1)
     
        ' Vérifie si le corps de l'e-mail est au format HTML
        If objMail.BodyFormat <> olFormatHTML Then
            MsgBox "Le corps de l'e-mail n'est pas au format HTML.", vbExclamation
            Exit Sub
        End If
     
        ' Construit la liste à puces au format HTML
        strHTML = "<ul>" & vbCrLf & _
                  "<li>Élément 1</li>" & vbCrLf & _
                  "<li>Élément 2</li>" & vbCrLf & _
                  "<li>Élément 3</li>" & vbCrLf & _
                  "</ul>" & vbCrLf
     
        ' Ajoute la liste à puces au début du corps de l'e-mail
        objMail.HTMLBody = strHTML & objMail.HTMLBody
     
        ' Sélectionne la liste à puces
        objMail.BodyFormat = olFormatHTML ' Définir explicitement le format du corps du message à HTML
        objMail.GetInspector().WordEditor.Application.Selection.Start = 0
        objMail.GetInspector().WordEditor.Application.Selection.End = 0
    End Sub

  6. #6
    Membre actif Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 754
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    Pour le corps des mail en HTMLBody :

    J'ai découvert un bout de piste pour mes macro html
    J'ai remplacé <p par <span

    Exemple si double retour ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span style='font-family: Calibri Light; font-size: 11pt;'>
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p style='font-family: Calibri Light; font-size: 11pt;'>

    Pour les rendez-vous, apparemment le HTMLBody est impossible

    Pour éviter le retour à la ligne double lors de l'appui sur la touche ENTER après l'affichage du rendez-vous, il faut forcer la mise en forme en texte brut

    Ajouter cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .BodyFormat = olFormatPlain 'Forcer le format en texte brut pour éviter le double retour à la ligne
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     With Email
                        .Subject = Objet_mail
                        .BodyFormat = olFormatPlain 'Forcer le format en texte brut pour éviter le double retour à la ligne
                        .Body = Message
                        .RequiredAttendees = "" ' participants obligatoires à la réunion
                        .OptionalAttendees = "" 'participants optionnels à la réunion
                        .Categories = ""
                        .ReminderSet = False 'Activer le rappel
                        .ReminderMinutesBeforeStart = 60 'H. Fin du rappel en minutes
                        .Start = dateValue(Date_Intervention) & " " & Heure_Debut
                        .End = dateValue(Date_Intervention) & " " & Heure_Fin
                        .Location = f.Cells(ActiveCell.Row, Range("TS_Suivi" & "[Adresse]").Column)
                        .Display 'Afficher le rendez-vous pour modification
                End With
    Bon dimanche 😘

  7. #7
    Membre actif Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 754
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    Pour les rendez-vous

    Avec le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .BodyFormat = olFormatPlain
    Les retours à la ligne "vbLf" sont présents dans le rendez-vous, mais disparaissent lors de l'impression
    Le texte n'a plus de retour à la ligne, les retours à la ligne sont ignorés lors de l'impression et le texte est sur une ligne

    J'ai dû remplacer le code par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .BodyFormat = olFormatRichText
    Si je remplace le code par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .BodyFormat = olFormatHTML
    Les doubles retours ligne réapparaissent

    À devenir neuneu...

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/11/2018, 14h43
  2. [XSLT][>CSV] problème sur sauts de ligne (RC)
    Par jaq dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/12/2006, 15h29
  3. Réponses: 3
    Dernier message: 16/08/2006, 17h32
  4. Problème de sauts de lignes lors d'un export Excel
    Par guidav dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2006, 14h58
  5. Problème de saut de ligne dans un script
    Par AurelBUD dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo