EXCEL VBA génère messages Outlook illisibles
Frutchy
Messages postés
66
Date d'inscription
Statut
Membre
Dernière intervention
-
thev Messages postés 1987 Date d'inscription Statut Membre Dernière intervention -
thev Messages postés 1987 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis sous EXCEL 2002 et Outlook 2002, VBA 6.
J’ai une procédure EXCEL qui génère, par Outlook.Application, etc., un courriel prérempli avec adresse du destinataire, un titre, texte et une pièce jointe.
A la fin, je n’envoie pas le message mais je me contente de l’afficher (Message.Display).
Ainsi, je peux encore ajouter quelque chose au texte avant envoi.
Cela fonctionne impec, sauf que chez mes destinataires le message est illisible alors qu'il s'affiche bien chez moi avant l'envoi.
Chez les destinataires, le sujet du message commence par =?Windows-1252?Q?, dans le texte toutes les minuscules accentuées sont remplacées par des =avec leur code, etc.
J’ai compris qu’il s’agit d’un problème d’encodage mais je n’arrive pas à le résoudre.
Je précise que lorsque je saisis un courriel de toute pièce sous Outlook 2002 directement, tout fonctionne très bien. J’ai plusieurs adresses de messagerie et je peux réaliser un envoi à travers plusieurs fournisseurs d’accès, cela ne change rien.
C’est donc bien le message généré depuis VBA qui pose problème.
Je n’ai pas trouvé un moyen de forcer un encodage via VB.
J’ai déjà essayé de modifier la base de registre et d’ajouter, sous HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail, une Dword avec 0 (IntelligentCoding) ou 2 (Base64), mais rien n’y fait.
Le pire, c’est que certains envois arrivent correctement (mais c’est plutôt rare).
Auriez-vous une idée ? Existe-il une option par le biais duquel on peut forcer un encodage UTF-8 (c’est visiblement ce qu’il faut) ? Je n’ai pas la moindre idée d’où il sort l’encodage Windows-1252 qui, d’après ce que j’y pu comprendre, est obsolète.
Actuellement, je fonctionne avec le code suivant
(j’ai laissé en commentaire des variantes que j’ai également essayé, genre CreateObject au lieu de GetObject, mais pour autant que je sache le problème ne se trouve pas là) :
Dim ServOutlook As Outlook.Application
Dim Message As Outlook.MailItem
'appel de la fonction
Set ServOutlook = GetObject("", "Outlook.Application")
' Set ServOutlook = New Outlook.Application
Set Message = ServOutlook.Createitem(olMailItem)
' Set ServOutlook = CreateObject("outlook.Application")
' Set Message = ServOutlook.Createitem(0)
Message.To = Destinataire
Message.Subject = SujetMessage
Message.body = TexteMessage
‘ Message.HTMLBody = TexteMessage
fichierPDF = Cells(2, 2)
On Error Resume Next
Message.ATTACHMENTS.Add (fichierPDF)
If Err <> 0 Then
MsgBox "Le fichier PDF " & fichierPDF & " est introuvable." & vbCrLf & _
"Le message ne sera pas envoyé."
Set ServOutlook = Nothing
Exit Sub
End If
On Error GoTo 0
Message.Display
Set ServOutlook = Nothing
Je vous remercie par avance pour vos lumières !
Je suis sous EXCEL 2002 et Outlook 2002, VBA 6.
J’ai une procédure EXCEL qui génère, par Outlook.Application, etc., un courriel prérempli avec adresse du destinataire, un titre, texte et une pièce jointe.
A la fin, je n’envoie pas le message mais je me contente de l’afficher (Message.Display).
Ainsi, je peux encore ajouter quelque chose au texte avant envoi.
Cela fonctionne impec, sauf que chez mes destinataires le message est illisible alors qu'il s'affiche bien chez moi avant l'envoi.
Chez les destinataires, le sujet du message commence par =?Windows-1252?Q?, dans le texte toutes les minuscules accentuées sont remplacées par des =avec leur code, etc.
J’ai compris qu’il s’agit d’un problème d’encodage mais je n’arrive pas à le résoudre.
Je précise que lorsque je saisis un courriel de toute pièce sous Outlook 2002 directement, tout fonctionne très bien. J’ai plusieurs adresses de messagerie et je peux réaliser un envoi à travers plusieurs fournisseurs d’accès, cela ne change rien.
C’est donc bien le message généré depuis VBA qui pose problème.
Je n’ai pas trouvé un moyen de forcer un encodage via VB.
J’ai déjà essayé de modifier la base de registre et d’ajouter, sous HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Outlook\Options\Mail, une Dword avec 0 (IntelligentCoding) ou 2 (Base64), mais rien n’y fait.
Le pire, c’est que certains envois arrivent correctement (mais c’est plutôt rare).
Auriez-vous une idée ? Existe-il une option par le biais duquel on peut forcer un encodage UTF-8 (c’est visiblement ce qu’il faut) ? Je n’ai pas la moindre idée d’où il sort l’encodage Windows-1252 qui, d’après ce que j’y pu comprendre, est obsolète.
Actuellement, je fonctionne avec le code suivant
(j’ai laissé en commentaire des variantes que j’ai également essayé, genre CreateObject au lieu de GetObject, mais pour autant que je sache le problème ne se trouve pas là) :
Dim ServOutlook As Outlook.Application
Dim Message As Outlook.MailItem
'appel de la fonction
Set ServOutlook = GetObject("", "Outlook.Application")
' Set ServOutlook = New Outlook.Application
Set Message = ServOutlook.Createitem(olMailItem)
' Set ServOutlook = CreateObject("outlook.Application")
' Set Message = ServOutlook.Createitem(0)
Message.To = Destinataire
Message.Subject = SujetMessage
Message.body = TexteMessage
‘ Message.HTMLBody = TexteMessage
fichierPDF = Cells(2, 2)
On Error Resume Next
Message.ATTACHMENTS.Add (fichierPDF)
If Err <> 0 Then
MsgBox "Le fichier PDF " & fichierPDF & " est introuvable." & vbCrLf & _
"Le message ne sera pas envoyé."
Set ServOutlook = Nothing
Exit Sub
End If
On Error GoTo 0
Message.Display
Set ServOutlook = Nothing
Je vous remercie par avance pour vos lumières !
A voir également:
- EXCEL VBA génère messages Outlook illisibles
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Comment récupérer les messages supprimés sur whatsapp - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
J'avais déjà essayé, mais cela a fait pareil !
Entretemps, je viens d'identifier le problème mais je n'ai pas encore la solution : Le problème est causé par les minuscules accentuées présentes dans le sujet et le texte du message !
C'est donc bien un problème de jeu de caractères mais qui reste identique, même avec Message.HTMLBody.
Le sujet et le texte du message proviennent de cellules EXCEL que j'insère de la façon suivante :
Dim SujetMessage As String
Dim TexteMessage As String
If Cells(5, Cellule_cible.Column) <> "" Then
SujetMessage = Cells(5, Cellule_cible.Column) & vbCrLf & vbCrLf
Else
Msgbox "Il manque le sujet du message !" & vbCrLf & vbCrLf
Exit Sub
End If
Message.Subject = SujetMessage
Message.body = TexteMessage
Si je garde le sujet et le texte tel quel mais que je resaisis, dans la fenêtre d'Outlook, ces minuscules accentuées en les remplaçant par exactement les mêmes ("à" pour "à", etc., ça passe ! Si je laisse les minuscules en provenance des cellules d'EXCEL, j'ai l'erreur.
Alors là !
Le pire, c'est que cela a fonctionné et même aujourd'hui, un, mais un seul message est passé correctement.