Envoie Mails VBA avec convertHTML

bonjour j'ai créé un fichier Excel avec plusieurs pages pour faire des devis, cotations... et dans ce fichier je dois envoyer des mails en copiant une des pages avec du texte et un tableau en en joignant un ou plusieurs fichiers .

j'ai utiliser un lien de votre Forum pour faire ma macro pour envoyer des mails via Excel , mais j'ai un soucis avec la fonction convertHTML , cela me créé un fichier abctext.html qui s'enregistre n'importe ou !

cela me gène car mon mail envoie en pièce jointe le dernier fichier enregistrer du répertoire cible et donc au lieu d'envoyer un fichier pdf ou Excel, le mail envoie le fichier .html .

est il possible dans la fonction converthtml, soit de ne pas enregistrer ce fichier html, soit de lui donner un chemin pour qu'il s'enregistre au un endroit précis?

voici mon code vba pour l'envoie de mon mail :

Sub Mail_client_piecejointe()
Dim OutApp As Object 'Déclaration de l'application objet Outlook
Dim OutMail As Object 'Déclaration du mail objet Outlook
Dim Nom_Fichier As Variant
Dim Nom_Fichier_1 As Variant
Dim Fichier_Prendre As String
Dim MaFeuille As Worksheet
Dim NbLigne As Integer
Dim Email As Variant
Dim Subject As Variant
Dim Body As Variant

Sheets("Mail Client").Select
Set MaFeuille = ThisWorkbook.Sheets("Mail Client")
Application.ScreenUpdating = False
MaFeuille.Range("A1:E15" & NbLigne).Select
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Body = converthtml(Range("A1:E15"))
Body = Replace(Body, "align=center", "align=left")

OutMail.To = MaFeuille.Range("M3")
OutMail.CC = MaFeuille.Range("M4")
OutMail.Subject = MaFeuille.Range("M5").Value ' & " à " & Time() & propID
OutMail.HTMLBody = Body

Nom_Fichier = FindLastFile("P:\ALSO\BU SUNNY\François\Cotations\Quotes_Clients\Cotations_Pdf\")
Nom_Fichier_1 = FindLastFile("P:\ALSO\BU SUNNY\François\Cotations\Quotes_Clients\Cotations_Excel\")
MsgBox Nom_Fichier & Nom_Fichier_1 'vérifier si le fichier est bien trouvé

If Nom_Fichier = "" Then Exit Sub
If Nom_Fichier_1 = "" Then Exit Sub
OutMail.Attachments.Add Nom_Fichier
OutMail.Attachments.Add Nom_Fichier_1

OutMail.Send 'envoie directement le mail

Set OutMail = Nothing 'nettoie la mémoire en nettoyant les variables
Set OutApp = Nothing 'nettoie la mémoire en nettoyant les variables
Sheets("Quick Quote").Select
Range("D2").Select

End Sub

Function FindLastFile(Path As String)
'cette fonction permet de chercher le fichier le plus récent dans le répertoire
Dim fName As String
Dim fDate As Date

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

Dim folder
Set folder = fso.GetFolder(Path)

Dim Files
Set Files = folder.Files

Dim File
For Each File In Files
If File.DateCreated > fDate Then
fDate = File.DateCreated
fName = File.Name
End If
'Debug.Print File.Name, File.DateCreated, "=>", fName, fDate
Next

Set Files = Nothing
Set folder = Nothing
Set fso = Nothing

FindLastFile = Path & "\" & fName

End Function

Function converthtml(plage As Object)
Dim lmf, fso, ts, r
lmf = "abctext.html"
With ActiveWorkbook.PublishObjects.Add(xlSourceRange, lmf, plage.Parent.Name, plage.Address, xlHtmlStatic, "Book1_26691", "")
.Publish (True)
.AutoRepublish = False
End With
Set fso = CreateObject("scripting.filesystemobject")
Set ts = fso.OpenTextfile(lmf)
r = ts.readall
ts.Close
converthtml = r
End Function

merci d'avance pour votre aide

cordialement

François

bonjour,

voici une façon de faire

Function converthtml(plage As Object)
    Dim lmf, fso, ts, r

    lmf = "c:\temp\abctext.html" ' <-adapter ceci

    With ActiveWorkbook.PublishObjects.Add(xlSourceRange, lmf, plage.Parent.Name, plage.Address, xlHtmlStatic, "Book1_26691", "")
        .Publish (True)
        .AutoRepublish = False
    End With
    Set fso = CreateObject("scripting.filesystemobject")
    Set ts = fso.OpenTextfile(lmf)
    r = ts.readall
    ts.Close
    converthtml = r
End Function

Bonjour le cuillier et

Une petite présentation ICI serait la bienvenue

Je vous invite vivement à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

Et également

  • Pour plus de lisibilité, utilisez la fonctionnalité pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).

Merci d'y faire attention SVP

Cordialement

Bon dimanche

Edit : Salut h2so4 bon, dimanche également

Bonsoir BrunoM45,

je ferais attention pour mes prochaines demande :-)

merci à H2SO4 pour son code qui fonctionne parfaitement

et qui résoud un soucis

merci encore cordialement

François

Rechercher des sujets similaires à "envoie mails vba converthtml"