Créer mail depuis Excel vers Outlook EN TEXTE BRUT
Résolu
touroul
Messages postés
509
Date d'inscription
Statut
Membre
Dernière intervention
-
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
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 :
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 :
Par avance merci pour votre aide
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 = olFormatRichTextque 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:
- Copier coller adresse mail excel vers outlook
- Darkino nouvelle adresse - Guide
- Supprimer adresse mail outlook - Guide
- Historique copier coller - Guide
- Liste déroulante excel - Guide
- Adresse mac - Guide
5 réponses
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 :
Essai soit ceci :
Soit
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
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
Bonjour
Un petit up!
Avez-vous une idée pour intégrer la variable BodyFormat = olFormatRichText dans ma macro ?
Merci !
Un petit up!
Avez-vous une idée pour intégrer la variable BodyFormat = olFormatRichText dans ma macro ?
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)
-
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
Si tu as une idée : pas sûr que ce soit possible
Bonne soirée !
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 !
Ah mince !
Le
Or dans ton cas tu ne met pas de message (body) dans ton mail mais un copier/coller des cellules avec cette instruction
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 :
Le
.BodyFormat = olFormatRichTextaurait 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !
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 !