Enr. Word en HTML pour envoi mail : lien image Rompus

Word, PowerPoint, Outlook, Access et tous les autres logiciels de la suite Office (sauf Excel)
l
lexxor
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 9 novembre 2015
Version d'Excel : 2010

Message par lexxor » 27 août 2017, 13:39

Bonjour,

J'ai créé un fichier VBA qui envoie mes mails automatiquement en personnalisant un document Word selon le destinateur (via les signets de Word).

Ce document word est ensuite enregistré au format HTML pour conserver ma mise en page (Avec mes images).

Lors de l'enregistrement du fichier Word en HTML, les images du document word sont automatiquement enregistrées dans un dossier Secret_HTML.

Quand j'ouvre mon fichier HTML via IE, les images s'affichent correctement mais lorsque j'incorpore le code source HTML dans outlook, j'ai bien tout mon message personnalisé mais les liens sont rompus et donc je n'ai plus d'images affichées.

Voila le bout de code
' Sauvegarder le document de Publipostage en html et fermeture
'ces lignes permettent de récupérer le code source d'une page web
'comme le fichier publiposté est enregistré en ".htm" je récupère son code source avec les balises html
'qui vont se stocker dans la variable "Corps_du_message"
    
    Dim IE As Object
    Dim maPageHtml As Object
     
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = False
     
    IE.navigate (NDF2)                            'Ouverture de mon document HTML qui a été généré depuis Modèle Word
       Do Until IE.readyState = 4
          DoEvents
       Loop
     
    Set maPageHtml = IE.document
    Corps_du_message = maPageHtml.DocumentElement.innerHTML
    IE.Quit


  'création des mails
  Set oApp = CreateObject("outlook.application")
  Set OMail = oApp.CreateItem(olMailItem)
  
  
  If Chemin_PJ <> "" Then
  OMail.Attachments.Add Chemin_PJ
  End If
  If Chemin_PJ2 <> "" Then
  OMail.Attachments.Add Chemin_PJ2
  End If
  If Chemin_PJ3 <> "" Then
  OMail.Attachments.Add Chemin_PJ3
  End If
  '----------------------------------
  'en mettant la source dans un HTMLBody, Outlook va comprendre le html et le mail que recevront les destinataires,
  'sera à l'identique du fichier Word publiposté

  OMail.To = Destinataire
  OMail.CC = Destinataires_Copie
  OMail.Subject = Objet_du_message
  OMail.HTMLBody = Corps_du_message
  OMail.Display
 'OMail.Send

Si quelqu'un peut me débloquer, je lui serai grandement reconnaissant !
Modifié en dernier par lexxor le 27 août 2017, 17:03, modifié 1 fois.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 27 août 2017, 16:35

Bonjour,

Et non !! passer par word n'est pas pour moi la solution dans ce cas de figure.

2 ou 3 solutions :
- soit tu fais une copie de ta page word ou html et tu la colles dans le texte (je n'ai jamais essayé)
- soit tu restes dans excel, tu fais une bonne mise en page dans excel avec l'avantage de pouvoir y inclure facilement des paramètres via les formules et ensuite :
-- tu fais un fichier attaché pdf
-- ou (c'est la solution que je préconiserais) tu fais un copier/coller de cet onglet excel dans le corps du mail = testé sans problème.

Pour coller dans le mail, j'emploie sendkeys pour garder la mise ne page (en réalité on doit pouvoir directement écrire directement dans le htmlbody mais la mise en page est aléatoire et faite à la main de balises html.

je pense aussi que même si on modifiait les liens dans maPageHtml.DocumentElement.innerHTML pour pointer les images en absolu vers le bon dossier, ce n'est pas sûr que le destinataire les recevraient !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
lexxor
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 9 novembre 2015
Version d'Excel : 2010

Message par lexxor » 27 août 2017, 16:51

Bonjour,

Merci de ta réponse rapide !

Aurais-tu un exemple de programme de la troisième solution pour envoyer le contenu d'une seule feuille via PDF !

Petit précision, j'utilise les signets sur word pour faire un mail personnalisé. Si je met une partie de mon corps de texte dans une cellule comme pourrais-je mettre à jour le nom et les informations sur le destinataire du mail ?

Merci encore de ton aide
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 27 août 2017, 17:06

lexxor a écrit :Aurais-tu un exemple de programme de la troisième solution pour envoyer le contenu d'une seule feuille via PDF !
envoi_email pdf.xlsm
(16.8 Kio) Téléchargé 24 fois
lexxor a écrit :Petit précision, j'utilise les signets sur word pour faire un mail personnalisé. Si je met une partie de mon corps de texte dans une cellule comme pourrais-je mettre à jour le nom et les informations sur le destinataire du mail ?
J'imaginais ceci dans une cellule
="Bonjour Monsieur " & Feuil1!A1 & " " & Feuil1!B1
signet.xlsx
(8.75 Kio) Téléchargé 16 fois

En complément, si le fichier pdf était issu du fichier word, alors le code macro est plus simple
Option Explicit
Sub envoi()

Dim messagerie As Object
Dim email As Object

    Set messagerie = CreateObject("Outlook.Application")
    Set email = messagerie.CreateItem(0)
    With email
        .to = [destinataire]
        .Subject = [titre]
        .body = "Veuillez trouver en pièce jointe ..."
        .Attachments.Add "C:\documents\mon_fichier.pdf" ' à personnaliser
        .display ' ou .send
    End With
    Set email = Nothing
    Set messagerie = Nothing
        
End Sub

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
lexxor
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 9 novembre 2015
Version d'Excel : 2010

Message par lexxor » 28 août 2017, 17:32

Merci Steelson,

Je te remercie de ton coup de main mais si j'ai bien compris tes solutions ne répondent pas à mes besoins.

Je précise :
- J'utilise word pour créer mon corps de mail personnalisé grâce aux signets. Faisable aussi avec des formules dans excel cependant je ne serai pas l'utilisateur final de mon outil donc s'ils souhaitent un jour/demain modifier le corps de mail pas vraiment pratique par rapport au document word.
- J'utilise l'enregistrement du document word au format HTML pour conserver la mise en forme. Cependant, en utilisant les cellules excel comme tu l'as préconisé, impossible de faire des différences de typographie : Gras/Italique/couleur...

Si quelqu'un à la bonne solution ou un autre idée, j'en serai grandement reconnaissant.

Quelqu'un semble avoir trouvé la bonne solution mais je n'arrive pas à l'appliquer/comprendre.
https://social.msdn.microsoft.com/Forum ... orum=vbafr

Je vous remercie.
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 28 août 2017, 18:51

lexxor a écrit :- J'utilise l'enregistrement du document word au format HTML pour conserver la mise en forme. Cependant, en utilisant les cellules excel comme tu l'as préconisé, impossible de faire des différences de typographie : Gras/Italique/couleur...
J'avais complété ma réponse justement pour permettre un enregistrement en pdf plutôt qu'en html.

Nota : ton, lien est en effet intéressant ; si on arrive à modifier les balises html issues du fichier word comme préconisé, cela répondra à ta préoccupation. Je reste sur la crainte que j'exprimais "je pense aussi que même si on modifiait les liens dans maPageHtml.DocumentElement.innerHTML pour pointer les images en absolu vers le bon dossier, ce n'est pas sûr que le destinataire les recevraient !", mais je vais me pencher sur la solution que tu mentionnes car cela résoudrait en effet pas mal de sujets !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 28 août 2017, 19:07

1- les images sont en réalité chargées dans un répertoire caché d'outlook, et elles sont ensuite repérées parcid:. Il faut donc recopier les images générées lors de la sauvegarde du word dans ce répertoire et ensuite modifier les src des images du texte html pour point vers cid: ... je n'ai plus l'appli outlook actuellement pour tester

2- sinon, je préconiserai aussi d'essayer d'ouvrir le word original, faire par sendkeys Ctrl+A et Ctrl+C pour tout copier, aller dans le mail et faire par sendkeys Ctrv+V pour coller, tout ceci piloté par excel.

A défaut d'avoir outlook, je vais tester la seconde solution sur une autre application, toujours en partant d'excel et word.

Maintenant si qqun peut répondre à la mise en oeuvre de la méthode que tu souhaites ce sera parfait !

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
l
lexxor
Jeune membre
Jeune membre
Messages : 12
Inscrit le : 9 novembre 2015
Version d'Excel : 2010

Message par lexxor » 28 août 2017, 19:30

J'ai réussi à visualiser le code source du fichier html enregistré à partir du word personnalisé !
La même pour ce mail avec les liens restauré via Outlook !

Petit problème pour faire la comparaison des deux fichiers et modifier en conséquent les liens dans maPageHtml.DocumentElement.innerHTML !

Ducoup cest plus un problème excel ou word, As tu une solution pour comparer de fichier texte ? J'ai rien trouvé sur notepad !

Merci !
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 28 août 2017, 20:38

Si tu pouvais refaire la manip avec un fichier word simple lambda non confidentiel, je pense que je pourrais le faire soit en javascript, soit en VBA avec du traitement de texte (split) ou des getelementbyid pour cibler la comparaison sur les <img src="______">

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 11'393
Appréciations reçues : 585
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 28 août 2017, 21:47

Juste une question ... qui pourrait donner aussi une autre tournure, une autre solution :
quel est l'apport d'excel ?
parce qu'on peut très bien écrire du VBA sous outlook (cela fonctionne un peu différemment au niveau de l'enregistrement de la macro) pour aller chercher des infos, soit dans le fichier html, soit dans word (par copier/coller)

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message