Insérer un tableau dans un message outlook
Bonjour,
J'essaie d'insérer un tableau dans un message outlook mais il me signale cette variable : (Dim oTbl As Table) avec le message suivant :
"message d'Erreur de compilation : Type défini par l'utilisateur non défini"
Const cSujet = "Sujet bla bla bla..."
Const cIntroduction = "<Html><body style=""font-family:Times_New_Roman; font-size:118%; color:#3498DB; background-color:#F9E79F;""> Bonjour,<br/><br/> Ci-joint les stats depuis le 01/01/2009 au & DateStrg & "."
Const cRangeToeMail = "$B$24:$B$32"
Const cSignature = "<Html><body style=""font-family:Times_New_Roman; font-size:70%; color:#3498DB;""> -----------------------------------------------------------------------------------------------------------------------------------------------------------------<br/><br/> <i>M. Prenom NOM</i><br/> <i>Responsable</i><br/> <i>Direction</i><br/> <i>E -mail: <u style=""color:#0000FF;"">email</u></i><br/> <i>Fax : </i><br/> <i>Standard : </i><br/> <i><u style=""color:#800080"">site1</u> & <u style=""color:#800080"">site2</u></i><br/> <i>-------------------------------------------------------------------</i><br/> <i>Adresse</i><br/><br/> <b style=""font-size:130%; color:#808080;"">Suivez-nous sur :</b>" & _
"<a href = '
'> <img src ='cid:Facebook.ico'>  </a> " & _
"<a href = '
'> <img src ='cid:Linkedin.ico'>  </a> " & _
"<a href = '
'> <img src ='cid:Twitter.ico'>  </a> " & _
"<a href = 'https:/yb/channel/DDDDD'> <img src ='cid:Youtube.ico'>  </a> " & _
"<a href = '
'> <img src ='cid:Googleplus.ico' width='0.5%' height='0.5%'> </a> <br/><br/> " & _
"<img src ='cid:Signature_Email.jpg' width='315' height='125'> </Html></body>"
Const xEMailAddr = "email1"
Const xEMailAddrCopy = "email2; email3"
Const xEMailAddrHidden = "email4"
Dim oSheet As Worksheet
Dim xOutlook As Object
Dim xMailItem As Object
Dim oTbl As Table
Set oSheet = Sheets("Stat Reporting") ' Dans ce module dont lequel y a le code, la page "Stat Reporting" est dans un autre fichier excel.
Set xOutlook = CreateObject("Outlook.Application")
Set xMailItem = xOutlook.CreateItem(0)
With xMailItem
.To = xEMailAddr
.CC = xEMailAddrCopy
.BCC = xEMailAddrHidden
.HTMLBody = composeBody(oSheet, cIntroduction, cRangeToeMail, cSignature)
.Subject = cSujet
.Display
End With
Function composeBody(zSheet As Worksheet, zIntroduction As String, zRange As String, zSignature As String) As String
Const cTmpFile = "TemporaryFile.htm"
Dim sTempFilename As String
Dim oFS As Object
Dim oTS As Object
Dim oPO As Excel.PublishObject
Dim sBuffer As String
Dim oTbl As Table
'On compose le nom du fichier temporaire
sTempFilename = CreateObject("WScript.Shell").SpecialFolders("Documents") & "\" & cTmpFile
'On met en forme le début du corps du mail
composeBody = "<html> <body>" & zIntroduction & "<br/>"
'On exporte le tableau dans le fichier temporaire en HTML
Set oPO = ThisWorkbook.PublishObjects.Add(xlSourceRange, sTempFilename, zSheet point Name, zRange, xlHtmlStatic, "", "")
oPO.Publish (True)
oPO.Delete
'On récupère le contenu du fichier temporaire dans une variable string locale
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oTS = oFS.OpenTextFile(sTempFilename)
sBuffer = oTS.ReadAll
oTS.Close
Set oTS = Nothing
Set oFS = Nothing
'On ajoute le tableau contenu dans la variable locale au corps du mail en la cadrant à gauche
composeBody = composeBody & Replace(sBuffer, "align=center", "align=left")
'On ajoute la signature
composeBody = composeBody & "<br/>" & "Cordialement.<br/><br/>" & zSignature
'On ferme le corps du mail
composeBody = composeBody & "</Body>"
End Function
Merci par avance pour ton support
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
"Table" n'est pas une classe d'Excel mais d'Outlook.
Donc :
Dim oTbl As Object
ou si vous avez ajouté la référence Microsoft Outlook dans l'éditeur VB :
Dim oTbl As Outlook.Table
NB: utiliser la balise </> pour affichage du code.
Bonjour Thev,
Merci pour ta réponse,
Apparemment ça marcha mais mnt j'ai un autre message qui me met ce qui suit en surbrillance avec message : Erreur d'exécution 9 : L'indice n'appartient pas à la sélection.
Set oSheet = Sheets("Stat Reporting")
N.B : ' Dans ce module dont lequel y a le code ci-dessus, la page "Stat Reporting" est dans un autre fichier excel externe.
Merci par avance pour ton support
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonsoir,
Il vous suffit d'ouvrir le fichier contenant cette feuille :
Dim oSheet As Worksheet
Dim xOutlook As Object
Dim xMailItem As Object
Dim oTbl As Object
Dim id_fichier As String
Dim wb_stats As Workbook
id_fichier = répertoire & nom_fichier & "." & extension
Set wb_stats = Workbooks.Open(id_fichier, ReadOnly:=True) 'ouverture en lecture seule
Set oSheet = wb_stats.Sheets("Stat Reporting")
'............................................
'...........................................
wb_stats.Close False
Par ailleurs, dans votre fonction, des instructions sont erronées, rectif ci-dessous :
sTempFilename = CreateObject("WScript.Shell").SpecialFolders("MyDocuments") & "\" & cTmpFile
Set oPO = zSheet.Parent.PublishObjects.Add(xlSourceRange, sTempFilename, zSheet.Name, zRange, xlHtmlStatic, ",")
et
Bonjour Thev,
Merci beaucoup Thev pour tes réponses ça fonctionne à merveille
Une petite aide encore si possible, sur cette phrase je veux insérer dans un paragraphe en HTML une variable de date personnalisée ( DateStrg ) que j'ai déjà paramétré mais la syntaxe est erronée.
Const cIntroduction = "<Html><body style=""font-family:Times_New_Roman; font-size:118%; color:#3498DB; background-color:#F9E79F;""> Bonjour,<br/><br/> Ci-joint les stats depuis le 01/01/2009 au & DateStrg & "."
Merci par avance pour ton support
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Const cIntroduction = "<Html><body style=""font-family:Times_New_Roman; font-size:118%; color:#3498DB; background-color:#F9E79F;""> Bonjour,<br/><br/> Ci-joint les stats depuis le 01/01/2009 au & DateStrg & ""."" "
Bonjour,
Pas de résultat, sur l'e-mail j'ai cette ligne :
Ci-joint les stats depuis le 01/01/2009 au & DateStrg & "."
A noter que le code HTML modifié est :
Const cSujet = "Sujet bla bla bla..."
Const cIntroduction = "<Html><body style=""font-family:Times_New_Roman; font-size:118%; color:#3498DB; background-color:#F9E79F;""> Bonjour,<br/><br/> Ci-joint les stats depuis le 01/01/2009 au & DateStrg & ""."" "
Const cRangeToeMail = "$B$24:$B$32"
Const cSignature = "<Html><body style=""font-family:Times_New_Roman; font-size:70%; color:#3498DB;""> -----------------------------------------------------------------------------------------------------------------------------------------------------------------<br/><br/> <i>M. Prenom NOM</i><br/> <i>Responsable</i><br/> <i>Direction</i><br/> <i>E -mail: <u style=""color:#0000FF;"">email</u></i><br/> <i>Fax : </i><br/> <i>Standard : </i><br/> <i><u style=""color:#800080"">site1</u> & <u style=""color:#800080"">site2</u></i><br/> <i>-------------------------------------------------------------------</i><br/> <i>Adresse</i><br/><br/> <b style=""font-size:130%; color:#808080;"">Suivez-nous sur :</b>" & _
"<a href = 'https://fb/AAAAA'> <img src ='cid:Facebook.ico'>  </a> " & _
"<a href = 'https://ln/BBBBB'> <img src ='cid:Linkedin.ico'>  </a> " & _
"<a href = 'https://tw/CCCCC'> <img src ='cid:Twitter.ico'>  </a> " & _
"<a href = 'https:/yb/channel/DDDDD'> <img src ='cid:Youtube.ico'>  </a> " & _
"<a href = 'https://gl/u/0/EEEEE'> <img src ='cid:Googleplus.ico' width='0.5%' height='0.5%'> </a> <br/><br/> " & _
"<img src ='cid:Signature_Email.jpg' width='315' height='125'> </Html></body>"
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Const cIntroduction = "<Html><body style=""font-family:Times_New_Roman; font-size:118%; color:#3498DB; background-color:#F9E79F;""> Bonjour,<br/><br/> Ci-joint les stats depuis le 01/01/2009 au " & datestrg & "."
Bonjour,
Toujours rien , il m'affiche le message de : Erreur de compilation.
Constante requise.
J'ai déclaré
Const cDteStr = datestrg
Mais tjrs rien.
- Messages
- 4'064
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Exemple de déclaration pour votre constante (avec la date au format anglo-saxon : mois/jour/année) :
Const datestrg = #4/1/2020#
(01/04/2020)