VBA: Convertir un texte (variable) en HTML
coconuts_n
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
coconuts_n Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
coconuts_n Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je réalise actuellement une macro pour envoyer le contenu d'une feuille par mail grâce à une userform. Tout marche jusqu'à l'insertion de la signature. Voici le code que j'utilise (trouvé sur internet) :
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.To = Sheets("opérations " & Année).Cells(3, 4).Value 'adresses du mail
.CC = ""
.BCC = ""
.Subject = "Opération " & NuméroAliment & " - " 'objet du mail
.Body = Prévisualisation_form.Msg_TXTB.Value
.Send
End With
Le "display" permet l'affichage du message "vierge" d'outlook, le message ne comprend que la signature (format HTML) insérée dans le corp du message. L'exécution pas-à-pas remplie les champs différents champs un par un jusqu'au moment où c'est le champs "body".
A ce moment là, le corp du message se change, il prend la valeur qui apparaissait dans le champs "Msg_TXTB" de la userform "Prévisualisation_form" et la signature disparait!
Je remplace alors pas la ligne suivante :
.Body = Prévisualisation_form.Msg_TXTB.Value & .body
Lors de l'exécution, la signature reste, mais son format change et au final la signature ne peut plus être envoyé parce qu'elle n'est plus présentable.
Je re-change alors la dernière ligne par
.HTMLBody = Prévisualisation_form.Msg_TXTB.Value & .HTMLbody
Lors de l'exécution, la signature reste au format HTML, mais tout le corp du message se ratatine (plus de saut de ligne).
Ma question est la suivante : peut-on convertir le corp du mail (variable Prévisualisation_form.Msg_TXTB.Value) en HTML pour pouvoir l'introduire dans le mail correctement ? Ou tout simplement voyez-vous un autre moyen d'arriver à envoyer la signature sans en changer son format ?
Merci d'avance =)
Coco
Je réalise actuellement une macro pour envoyer le contenu d'une feuille par mail grâce à une userform. Tout marche jusqu'à l'insertion de la signature. Voici le code que j'utilise (trouvé sur internet) :
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.To = Sheets("opérations " & Année).Cells(3, 4).Value 'adresses du mail
.CC = ""
.BCC = ""
.Subject = "Opération " & NuméroAliment & " - " 'objet du mail
.Body = Prévisualisation_form.Msg_TXTB.Value
.Send
End With
Le "display" permet l'affichage du message "vierge" d'outlook, le message ne comprend que la signature (format HTML) insérée dans le corp du message. L'exécution pas-à-pas remplie les champs différents champs un par un jusqu'au moment où c'est le champs "body".
A ce moment là, le corp du message se change, il prend la valeur qui apparaissait dans le champs "Msg_TXTB" de la userform "Prévisualisation_form" et la signature disparait!
Je remplace alors pas la ligne suivante :
.Body = Prévisualisation_form.Msg_TXTB.Value & .body
Lors de l'exécution, la signature reste, mais son format change et au final la signature ne peut plus être envoyé parce qu'elle n'est plus présentable.
Je re-change alors la dernière ligne par
.HTMLBody = Prévisualisation_form.Msg_TXTB.Value & .HTMLbody
Lors de l'exécution, la signature reste au format HTML, mais tout le corp du message se ratatine (plus de saut de ligne).
Ma question est la suivante : peut-on convertir le corp du mail (variable Prévisualisation_form.Msg_TXTB.Value) en HTML pour pouvoir l'introduire dans le mail correctement ? Ou tout simplement voyez-vous un autre moyen d'arriver à envoyer la signature sans en changer son format ?
Merci d'avance =)
Coco
A voir également:
- VBA: Convertir un texte (variable) en HTML
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
3 réponses
Bonjour,
Sans l'avoir testé, essaie de rajouter ceci dans ton With :
[...]
.BodyFormat = olFormatHTML
[...]
Sinon :
essaie d'utiliser une variable intermédiaire :
Signature = .Display (au début du With)
Message = Prévisualisation_form.Msg_TXTB.Value (après ton message)
.HTMLBody = Message & Signature
Mélo
Sans l'avoir testé, essaie de rajouter ceci dans ton With :
[...]
.BodyFormat = olFormatHTML
[...]
Sinon :
essaie d'utiliser une variable intermédiaire :
Signature = .Display (au début du With)
Message = Prévisualisation_form.Msg_TXTB.Value (après ton message)
.HTMLBody = Message & Signature
Mélo
J'essaie d'enregistrer en format "htm" puis de reprendre le contenu de cet page. Mais l'enregistrement prends en compte la cellule et non la valeur contenue dans la cellule! Je me retrouve donc avec un cadre (sorte de zone de texte).
Le ".BodyFormat = olFormatHTML" suivi de ".body" équivaut au ".HTMLbody" pour mettre le texte en HTML. Cette solution n'a pas fonctionné.
Ensuite pour l'utilisation de variables intermédiaires "Signature = .Display " ne marche pas (fonction ou variable attendue). J'ai testé ce que tu m'as donné. J'ai mis :
With ...
.display
signature = .body
[...]
End With
Mais lorsque je réutilise la variable signature avec
.body = signature
ou
.HTMLbody = signature
la signature a changé et on voit les codes comme "HYPERLINK "mailto:..." ". dans les deux cas.
La difficulté en faite c'est de convertir le texte contenue dans une cellule et représenté par Prévisualisation_form.Msg_TXTB.Value en HTML.
J'ai remarqué que le copier/coller manuel marche alors j'ai gardé ".display" au début du with. J'ai essayé de simuler des touches ctrl+c et ctrl+v mais je bute pour continuer la macro.
C'est bizarre parce que quand je fais copier-coller manuellement, ça marche...
Coco=]