Créer mail depuis Excel vers Outlook EN TEXTE BRUT [Résolu]

Messages postés
356
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
6 juin 2019
-
Bonsoir le forum,

Depuis longtemps déjà, j'ai adapté une macro me permettant de générer un mail vers Outlook.
Le corps du mail est un ensemble de lignes du fichier Excel Source, ça fonctionne très bien, et sans activer de complément Excel.

Aujourd'hui, je cherche à modifier ma macro pour que les lignes de texte soient copiés dans le corps du mail non pas avec leur mise en forme (couleur, bordure, et ... cellules), mais en TEXTE BRUT.

Je n'ai rien trouvé là dessus, si ce n'est un paramètre :
.BodyFormat = olFormatRichText
que je ne sais pas adapter.

Pourriez-vous m'apporter de l'aide SVP ?

Voici un lien vers un fichier exemple :
https://www.cjoint.com/c/IFes7YD4Gfb

Et voici ma macro :

Option Explicit

Sub Mailing() 'Envoi automatique de mails
Dim lienH As String
Dim Body As Variant
Dim FeuilleActive As String
FeuilleActive = ActiveSheet.Name
Const olMailItem = 0
Dim r As Range
Set r = Range("B6:B15")
r.Copy
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
Dim OutMail As Object
Set OutMail = outlookApp.CreateItem(olMailItem)
With OutMail 'Destinataires et Objet :
.To = Range("B2").Text
.Subject = Range("B4").Text
' .BodyFormat = olFormatRichText
End With
OutMail.Display
Dim wordDoc As Object
Set wordDoc = OutMail.GetInspector.WordEditor
'BodyFormat = olFormatRichText

wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False

Application.CutCopyMode = False
ThisWorkbook.Activate: Sheets(FeuilleActive).Range("C2").Select
End Sub


Par avance merci pour votre aide


Configuration: Windows / Firefox 67.0 / Excel 365
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
1491
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
24 juillet 2019
375
1
Merci
Salut ,

Au moment de copier ton tableau excel il y a plusieurs arguments à prendre en compte.

Ton code d'origine au moment de la copie est :
wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False


Essai soit ceci :
wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=True, RTF:=True

Soit
wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=True



Je me suis appuyé sur cette doc pour te proposer une des deux solutions qui me semble viable :
https://docs.microsoft.com/fr-fr/office/vba/api/word.range.pasteexceltable

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 64130 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ozone_
Messages postés
356
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
6 juin 2019
7
0
Merci
Bonjour
Un petit up!

Avez-vous une idée pour intégrer la variable BodyFormat = olFormatRichText dans ma macro ?
Merci !
Commenter la réponse de touroul
Messages postés
356
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
6 juin 2019
7
0
Merci
Bonsoir Ozone

Merci pour ton aide.

J'ai essayé avec :

- wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=True, RTF:=True : il recopie les cellules dans le mail sans la couleur de fond, mais avec les cellules et leurs bordures (comme en False/True/False)

-
wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=True
: il recopie les cellules dans le mail avec la couleur de fond, avec les cellules, mais sans leur bordure.

Le site de Microsoft ne semble pas indiquer d'autres options.
Je ne parviens donc pas à me débarasser des cellules, pas moyen de faire du texte brut.

Pourtant il existe la variable
BodyFormat = olFormatRichText
: lorsque je la mets dans la définition de Outmail, il me l'indique en variable non définie ... :(

Si tu as une idée : pas sûr que ce soit possible

Bonne soirée !
Commenter la réponse de touroul
Messages postés
1491
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
24 juillet 2019
375
0
Merci
Ah mince !
Le
.BodyFormat = olFormatRichText
aurait un intérêt si tu avait une instruction .body dans ton mail. Tu as .To et .Subject pour respectivement le destinataire du mail et le sujet.
Or dans ton cas tu ne met pas de message (body) dans ton mail mais un copier/coller des cellules avec cette instruction
Set r = Range("B6:B15")


Comment est le tableau dans B6:B15 ?
Tu peux concaténer ces valeurs les une à la suite des autres et ainsi t'éviter le copier/coller.

Ce qui pourrait donner :
Option Explicit

Sub Mailing() 'Envoi automatique de mails
Dim lienH As String
Dim Body As Variant
Dim FeuilleActive As String
FeuilleActive = ActiveSheet.Name
Const olMailItem = 0
Dim outlookApp As Object
Set outlookApp = CreateObject("Outlook.Application")
Dim OutMail As Object
Set OutMail = outlookApp.CreateItem(olMailItem)
With OutMail 'Destinataires et Objet :
.To = Range("B2").Text
.Subject = Range("B4").Text
.BodyFormat = olFormatRichText
.Body = Range("B6").Text & chr(10) & Range("B7").Text & chr(10) & Range("B8").Text & chr(10) & Range("B9").Text & chr(10) & Range("B10").Text & chr(10) & Range("B11").Text & chr(10) & Range("B12").Text & chr(10) & Range("B13").Text & chr(10) & Range("B14").Text & chr(10) & Range("B15").Text
End With
OutMail.Display
ThisWorkbook.Activate: Sheets(FeuilleActive).Range("C2").Select
End Sub

Commenter la réponse de ozone_
Messages postés
356
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
6 juin 2019
7
0
Merci
Je comprends à présent ... j'ai donc mal mélangé 2 procédures distinctes.
L'idée de remplacer le Range de cellules en concaténant les mêmes cellules est à creuser.

Si j'utilise ta macro adaptée exactement comme tu l'as mis dans le post, j'obtiens systématiquement les mêmes erreurs :

- avec Option Explicit m'obligeant à déclarer toutes les variables : erreur de compilation : Variable non définie

- sans option Explicit : Erreur d'éxecution '5' : Argument ou appel de procédure incorrect.

J'imagine donc qu'il faut fixer via Dim la variable.

Je te remets mon fichier ici : https://www.cjoint.com/c/IFgsZ3IOvLb

Merci pour ta persévérance !
ozone_
Messages postés
1491
Date d'inscription
lundi 13 juillet 2009
Statut
Membre
Dernière intervention
24 juillet 2019
375 -
Zut !
N'ayant pas accès à Excel ce soir je regarderai demain !
Essaie peut être de retirer le .bodyformat sait on jamais. Et aussi de remplacer les chr(10) par des vbLf.
touroul
Messages postés
356
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
6 juin 2019
7 -
Oui et oui !
En, virant le .bodyformat, c'est parfait ! Carton plein c'était le but à atteindre !

Un grand merci à toi Ozone !

Très bonne soirée !
Commenter la réponse de touroul