Créer mail depuis Excel vers Outlook EN TEXTE BRUT

Résolu/Fermé
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - Modifié le 4 juin 2019 à 21:00
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 - 6 juin 2019 à 21:52
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
A voir également:

5 réponses

ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 6 juin 2019 à 18:37
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

1
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
6 juin 2019 à 17:29
Bonjour
Un petit up!

Avez-vous une idée pour intégrer la variable BodyFormat = olFormatRichText dans ma macro ?
Merci !
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
6 juin 2019 à 19:38
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 !
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
6 juin 2019 à 20:46
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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
6 juin 2019 à 20:52
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 !
0
ozone_ Messages postés 1518 Date d'inscription lundi 13 juillet 2009 Statut Membre Dernière intervention 2 juin 2023 478
Modifié le 6 juin 2019 à 22:06
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.
0
touroul Messages postés 465 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 29 janvier 2024 15
Modifié le 6 juin 2019 à 21:52
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 !
0