Convertir un texte HTML en UTF8

Johann RSW

XLDnaute Nouveau
Bonjour,

Je souhaite transmettre le texte suivant via une API d'Emailing (SendGrid) :
StrHTML = "Ci-joint le rapport mensuel d'optimisation. Sont présents les documents dont les options sont actives :"
Le texte reçu est le suivant :
Ci-joint le rapport mensuel d'optimisation. Sont pr�sents les documents dont les options sont actives :

Comme vous pouvez le constater les accents ne "passent" pas.
En consultant le forum je crois comprendre qu'il faut convertir/coder mon texte en format UFT-8

Je ne trouve malheureusement pas la ligne de commande ou le petit bout de programme qui me permettrait de coder en UFT-8

Quelqu'un peut-il m'aider ?
Merci.
Johann.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

J'ai fabriqué la fonction à partir d'une macro d'enregistrement de texte. -> à tester :
VB:
Function UTF8_Texte(Contenu As String, Optional sCharset As String = "UTF-8")
    Dim objStream As Object: Set objStream = CreateObject("ADODB.Stream")
    With objStream
        .Open
        .Position = 0
        .Charset = sCharset
        .WriteText Contenu
        .Position = 0 ' Remettre le curseur de lecture/écriture au début
        UTF8_Texte = .readText ' Lire jusqu'à la fin
        .Close
    End With
    Set objStream = Nothing
End Function

Bonne fin d'après-midi
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Vous dites: le mot "présents" devient "pr�sents".
Dans le mail reçu ou lorsque vous l'affichez d'une manière quelconque dans excel ou sous VBA ?

Pas suffisamment d'éléments pour vous aider davantage.

Bonne soirée
 

Johann RSW

XLDnaute Nouveau
Pour faire plus simple voici ci-dessous ma macro complète, dont la fonctionnalité est de transmettre un mail avec une pièce jointe via une API d'Emailing (SendGrid).
Lorsque je souhaite envoyer dans le corps du message un mot avec un accent, le mail réceptionné comporte des "�" en lieu et place des accents.

___________________________________
Sub MailViaSenGrid ()
Dim reportName As String
Dim path As String
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim oFile As Object
Dim strAttachments As String
Dim strTransPort As String
Dim byteData() As Byte
Dim xmlhttp As Object
Dim eTo As String
Dim eFrom As String
Dim eBody As String
Dim eSubject As String
Dim eToName As String
Dim sReq As String
Dim ePass As String
Dim eUser As String
Dim strXML As String
Dim fePath As String
Dim FileName As String
Dim eBodyFrom As String
Dim CorpsMsg As String,

CorpsMsg ="Ci-joint le rapport mensuel d'optimisation. Sont présents les documents dont les options sont actives :"
CorsMsg = UTF8_Texte(CorpsMsg)
Nom_Pdf = "NomFichier.pdf"
PathPdf = "C:\Documents"

eTo = "toto@gmail.com"
eFrom = "Tartampion@gmail.com"
eBody = CorpsMsg
eSubject = "Objet du Message"
eToName = "Monsieur Jean-Pierre DUPONT"
eUser = "Login"
ePass = "PassWord"
FileName = "Rapport Mensuel"

strAttachments = "&files[" & Nom_Pdf]=" & Path_pdf & "\" & Nom_Pdf"

' Call The SendGrid API
sReq = "https://api.sendgrid.com/api/mail.send.xml?" _
& "api_user=" & eUser _
& "&api_key=" & ePass _
& "&to=" & eTo _
& "&toname=" & eToName _
& "&subject=" & eSubject _
& "&html=" & eBody _
& "&from=" & eFrom _
& strAttachments

Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
xmlhttp.Open "POST", sReq, False
'xmlhttp.en
xmlhttp.send
byteData = xmlhttp.responseBody
Set xmlhttp = Nothing
strXML = StrConv(byteData, vbUnicode)

End sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,


Vous avez une erreur de variable:

CorpsMsg ="Ci-joint le rapport mensuel d'optimisation. Sont présents les documents dont les options sont actives :"
CorsMsg = UTF8_Texte(CorpsMsg)

Il manque le p dans la deuxième ligne et vous envoyez le premier: eBody = CorpsMsg ( le texte non converti)

Pour éviter ce genre d'erreur mettez Option Explicit en première ligne de votre module.
Faites plus simple et en une ligne : CorpsMsg =UTF8_Texte("Ci-joint le rapport mensuel d'optimisation. Sont présents les documents dont les options sont actives :")

si avec ces modification cela ne fonctionne toujours pas, il vous faudra certainement trouver la bonne configuration de xmlhttp.
Essayez d'ajouter les deux lignes suivantes après xlmhttp.open et avant .send:
xmlhttp.SetRequestHeader "ContentType", "text/plain"
xmlhttp.SetRequestHeader "Charset", "iso-8859-1"

Testez avec un premier message sans passer par la fonction UTF8_Texte. Si ça passe c'est bon, sinon tester avec la fonction UTF8_Texte en mettant en second paramètre "iso-8859-1" : CorpsMsg =UTF8_Texte("Ci-joint le rapport mensuel d'optimisation. Sont présents les documents dont les options sont actives :", "iso-8859-1)

Bonne recherches

Edit: Bonjour Staple1600
 

Discussions similaires

Réponses
11
Affichages
1 K

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088