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 Functionmerci 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 FunctionBonjour 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
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