Microsoft 365 Mailing mise en forme HTML : revenir à la ligne automatique si trop de texte saisie

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 !

spike29

XLDnaute Occasionnel
Bonjour le forum,

J'utilise un formulaire permettant de générer un mailing. J'utilise dans le code VBA une mise en forme via HTML afin d'obtenir une mise en forme optimisée du mail.
En cellule G7 et H7 l'utilisateur saisit le contenu de sa demande ainsi qu'un éventuel commentaire.

Ma problématique est la suivante :
Lorsqu'un texte trop long est saisi en colonne G7 ou H7 il n'y a pas de retour à la ligne automatique dans le mail qui est généré. Cela donne alors une ligne à rallonge ce qui n'est pas très esthétique pour le lecteur.

Mon besoin :
Passé un certain nombre de caractère ou peut-être de mots (pour éviter de cutter un mot en plein milieu) j'aimerai qu'il y ai un retour à la ligne automatique.
Sur ce site très détaillé (https://laurent-ott.developpez.com/tutoriels/excel-mail-outlook/#LIII-B) traitant de l'utilisation de l'HTML dans du code VBA je n'ai pas trouvé de solution à mon problème.
Peut-être en utilisant la fonction "Mail_SautDeLigne", mais je ne vois pas comment faire.

Code utilisé :

VB:
Sub MAILING()

'Genere le mail de requête

    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim Signature As String
    Dim CorpsDuMessage As String
    Dim Texte As String

    ' Créer une instance d'Outlook
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    ' Afficher l'e-mail pour récupérer la signature par défaut
    With OutlookMail
        .Display
        Signature = .HTMLBody
    End With
   

Sheets("TEST").Activate


Num = " TEST2025 N° " & Range("B7").Value
Emetteur = Range("E2").Value
Dest = Range("E3").Value

'LD Test
Destrequête = ""
    With Sheets("Données")
        For idest = 1 To .[B2].End(xlDown).Row
            Destrequête = Destrequête & .Cells(idest, "B").Value & ";"
        Next idest
    End With

  Set OutObj = CreateObject("Outlook.Application")
  Set Email = OutObj.CreateItem(0)
           
'****** Liste diffusion en destinataire ******
     
LD1 = Destrequête

LDcc = Destrequête

' ****** Construction du mail avec mise en forme HTML ******

  Set OutObj = CreateObject("Outlook.Application")
  Set Email = OutObj.CreateItem(0)
  ' Afficher l'objet mail pour avoir la signature
  Email.Display
  ' Mémoriser la signature qui s'affiche
  Signature = Email.HTMLBody
  Email.To = LD1
  Email.CC = LDcc
  ' Sujet de l'eMail
  Email.Subject = "#Requête" & " " & Num & " " & " De " & " " & Emeteur & " " & "Pour" & " " & Dest
  ' Corps de mon mail
  Email.HTMLBody = "Bonjour,<BR><BR>" _
 & "Vous trouverez ci-dessous une nouvelle requête :<BR><BR>" _
 & "Type de requête  : <b>" & Sheets("TEST").Range("C7").Value & " </b> <p>" _
 & "Périmètre  : <b>" & Sheets("TEST").Range("D7").Value & " </b> <p>" _
 & "Période concernée : <b>" & " " & "De S" & Sheets("TEST").Range("E7").Value & " " & "à S" & Sheets("TEST").Range("F7").Value & " </b> <p>" _
 & "Contenu de la requête  : <b>" & Sheets("TEST").Range("G7").Value & " </b> <p>" _
 & "<u> Commentaire(s) éventuel(s) : </u>  <b>" & Sheets("TEST").Range("H7").Value & " </b> <p>" _
 & "<u> Lien d'accès au fichier : </u>  <b>" & "<a href=" & " " & Sheets("Données").Range("A1").Value & " <ICI</a> " & " </b> <p>" _
 & "Cordialement," & Signature


  Email.Display
    ' Effacer les objets
  Set Email = Nothing
  Set OutObj = Nothing


Application.ScreenUpdating = True
Application.EnableEvents = True
 
MsgBox " Message correctement transmis", vbInformation

End Sub


En PJ vous trouverez un fichier avec mon formulaire et mon code actuellement utilisé.

Merci d'avance et bonne journée
 

Pièces jointes

Solution
Quand tu a généré ton script HTM tu l'as écrit au filing et tu n'as pas respecté le sens des balises.

Le HTML, hormis la BR/, dispose d'une balise<ouvrante> et d'une balise <\fermante> . Tu ne prendras jamais de risques en écrivant les deux balise l'une sous l'autre avant d'insérer le contenu qu'elle gère.

VB:
Email.HTMLBody = "Bonjour,<BR><BR>" _
    & "Vous trouverez ci-dessous une nouvelle requête :<BR><BR>" _
    & "<div style='width: 50%; word-wrap: break-word; white-space: normal; text-align: justify; text-justify: inter-word;'>" _
    & "Type de requête  : <P><b>" & Sheets("TEST").Range("C7").Value & "<\b></P>" _
    & "Périmètre  : <P><b>" & Sheets("TEST").Range("D7").Value & " </b> </p>" _
    & "Période concernée : <P><b>...
Quand tu a généré ton script HTM tu l'as écrit au filing et tu n'as pas respecté le sens des balises.

Le HTML, hormis la BR/, dispose d'une balise<ouvrante> et d'une balise <\fermante> . Tu ne prendras jamais de risques en écrivant les deux balise l'une sous l'autre avant d'insérer le contenu qu'elle gère.

VB:
Email.HTMLBody = "Bonjour,<BR><BR>" _
    & "Vous trouverez ci-dessous une nouvelle requête :<BR><BR>" _
    & "<div style='width: 50%; word-wrap: break-word; white-space: normal; text-align: justify; text-justify: inter-word;'>" _
    & "Type de requête  : <P><b>" & Sheets("TEST").Range("C7").Value & "<\b></P>" _
    & "Périmètre  : <P><b>" & Sheets("TEST").Range("D7").Value & " </b> </p>" _
    & "Période concernée : <P><b> De S" & Sheets("TEST").Range("E7").Value & " à S" & Sheets("TEST").Range("F7").Value & " </p></b> " _
    & "Contenu de la requête  :  <p><b>" & Sheets("TEST").Range("G7").Value & " </b> </p>" _
    & "<u> Commentaire(s) éventuel(s) :</u><p><b>" & Sheets("TEST").Range("H7").Value & "</b></p>" _
    & "<u> Lien d'accès au fichier : </u>   <p><b><a href='" & Sheets("Données").Range("A1").Value & "'>ICI</a></b> </p>" _
    & "</Div>" _
    & "Cordialement," & Signature
 
Dernière édition:
Quand tu a généré ton script HTM tu l'as écrit au filing et tu n'as pas respecté le sens des balises.

Le HTML, hormis la BR/, dispose d'une balise<ouvrante> et d'une balise <\fermante> . Tu ne prendras jamais de risques en écrivant les deux balise l'une sous l'autre avant d'insérer le contenu qu'elle gère.

VB:
Email.HTMLBody = "Bonjour,<BR><BR>" _
    & "Vous trouverez ci-dessous une nouvelle requête :<BR><BR>" _
    & "<div style='width: 50%; word-wrap: break-word; white-space: normal; text-align: justify; text-justify: inter-word;'>" _
    & "Type de requête  : <P><b>" & Sheets("TEST").Range("C7").Value & "<\b></P>" _
    & "Périmètre  : <P><b>" & Sheets("TEST").Range("D7").Value & " </b> </p>" _
    & "Période concernée : <P><b> De S" & Sheets("TEST").Range("E7").Value & " à S" & Sheets("TEST").Range("F7").Value & " </p></b> " _
    & "Contenu de la requête  :  <p><b>" & Sheets("TEST").Range("G7").Value & " </b> </p>" _
    & "<u> Commentaire(s) éventuel(s) :</u><p><b>" & Sheets("TEST").Range("H7").Value & "</b></p>" _
    & "<u> Lien d'accès au fichier : </u>   <p><b><a href='" & Sheets("Données").Range("A1").Value & "'>ICI</a></b> </p>" _
    & "</Div>" _
    & "Cordialement," & Signature
Merci à tous pour votre contribution et merci dysorthographie pour ton éclairage sur le sujet. Effectivement mon code de base est loin de respecter les règles de base du balisage HTML. Avec ton code la mise en forme automatique du mail se fait désormais de la façon recherché. Encore Merci.
Bonne fin de journée
 
- 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
Retour