2 votes

La chaîne de caractères ne conservera pas les sauts de ligne lors de la copie dans Outlook

Je rencontre des difficultés pour coller une seule cellule dans Outlook tout en conservant les sauts de ligne. Je ne peux pas utiliser RangeToHTML car cela colle sous forme de tableau et j'ai besoin que ce soit du texte brut, donc j'ai essayé ceci :

Pour Chaque C Dans wsEnv.Range("A1:A17")
    If C.Row = 1 Then
        wsEnv.Cells(19, 1) = C & vbCrLf
    ElseIf C.Row < 17 Then
        wsEnv.Cells(19, 1) = wsEnv.Cells(19, 1) & C & vbCrLf
    Else
        wsEnv.Cells(19, 1) = wsEnv.Cells(19, 1) & C
    End If
Suivant C

On Error Resume Next

Avec OutMail
    .Display
    .To = Para
    .CC = CC
    .BCC = ""
    .Subject = Asunto
    .HTMLBody = wsEnv.Cells(19, 1)
    .Send
Fin Avec
On Error GoTo 0

Le résultat est le suivant :

Résultat

Y a-t-il un moyen de conserver le format dans la cellule ? Ou d'utiliser la fonction RangeToHTML pour le coller en texte et non en tableau ?

3voto

Pᴇʜ Points 16920

Vous utilisez un courrier HTML .HTMLBody et les retours à la ligne n'ont aucun effet dans le code HTML. En fait, .HTMLBody attend du code HTML et non du texte brut.

  • Soit utilisez un courrier "texte uniquement":

    Définissez la propriété MailItem.BodyFormat sur olFormatPlain (voir l'énumération OlBodyFormat) et utilisez .Body au lieu de .HTMLBody

    .BodyFormat = olFormatPlain
    .Body = wsEnv.Cells(19, 1).Value
  • ou remplacez tous les vbCrLf par le code HTML pour un saut de ligne.

    .HTMLBody = Replace$(wsEnv.Cells(19, 1).Value, vbCrLf, "")

Notez que les sauts de ligne que vous saisissez dans les cellules en utilisant Alt+Enter sont des vbLf et non des vbCrLf!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X