OVH Cloud OVH Cloud

mail par vba ( corps du message une plage de cellules préalablement formaté)

3 réponses
Avatar
isabelle
bonjour à tous,

j’essaie d’envoyer un mail par vba ( corps du message une plage de cellules
préalablement formaté)
j’aimerais que cette plage soit formatée autant au format nombre standard ou $
ou par la couleur
(mais pas par le copier coller qui rend le tableau trop large).

Voici mon test :
http://www.cjoint.com/c/FBmimziZaXa
Ce test représente mes données issues de 3 TCD, le fichier joint n’est qu’une
copie sans lien.

mon probleme est de faire les formats (standard 0, dollard 0.00$)

voici le ou j'en suis avec ce code,

Public strHTML As String, titre As String

Sub envoiPlageCellules()
Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem

Set appOutlook = CreateObject("outlook.application")
Set oMail = appOutlook.CreateItem(olMailItem)

Body_strHTML

With oMail
.Subject = "test - analyse et prix" 'Objet du mail
.HTMLBody = strHTML 'message du mail
.To = "zaza@xxxxxx.com" 'adapter à un mail valide
' .BodyFormat = olFormatHTML
' .Attachments.Add "C:\test.pptx"
.Send
End With

Set appOutlook = Nothing
End Sub

Sub Body_strHTML()
titre = "Analyse(ici-attaché)" & Chr(12) & Chr(12) & " prix coutant"
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "<B><SPAN
STYLE='background-color:white;font-size:6mm'>" & titre & " : </SPAN></B><BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"

lgn = Application.Match("Total général", Sheets("TCD").Range("B:B"), 0)

For i = 4 To lgn 'nombre de lignes
strHTML = strHTML '& "<TR halign='middle'nowrap>"

For j = 2 To 11 'nombre de colonnes
Select Case j
Case 3 Or 8: aligne = "left"
Case 2 Or 5 Or 10: aligne = "center" ' format standard 0
Case 4 Or 6 Or 9 Or 11: ' format dollard 0.00$
End Select

strHTML = strHTML & "<TD bgcolor='white'align='" & aligne & "'><FONT
COLOR='blue'SIZE=2>" & Cells(i, j) & "</FONT></TD>"
Next j

strHTML = strHTML & "</TR>"
Next i

strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & "isabelle"
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
End Sub

merci! pour votre aide
isabelle

3 réponses

Avatar
isabelle
je pense que mon message est plus pour le HTML, je vais détourner mon message,
désolé pour le dérangement. ;-(
isabelle

Le 2016-02-12 03:21, isabelle a écrit :
bonjour à tous,

j’essaie d’envoyer un mail par vba ( corps du message une plage de cellules
préalablement formaté) j’aimerais que cette plage soit formatée autant au
format nombre standard ou $ ou par la couleur (mais pas par le copier coller
qui rend le tableau trop large).

Voici mon test : http://www.cjoint.com/c/FBmimziZaXa Ce test représente mes
données issues de 3 TCD, le fichier joint n’est qu’une copie sans lien.

mon probleme est de faire les formats (standard 0, dollard 0.00$)
Avatar
DanielCo
Bonjour,
Essaie :
Sub envoiPlageCellules_Excel()
ActiveSheet.Range("A1:F20").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Item.Subject = "Demande de transport " & Cells(10, 2).Value & " à " &
Cells(14, 2)
.Introduction = "Bonjour, ci-dessous une demande de transport."
.Item.Send
End With
End Sub
(A partir de Excel 2010 ou Excel 2013).
Cordialement.
Daniel

bonjour à tous,

j’essaie d’envoyer un mail par vba ( corps du message une plage de cellules
préalablement formaté)
j’aimerais que cette plage soit formatée autant au format nombre standard ou
$ ou par la couleur
(mais pas par le copier coller qui rend le tableau trop large).

Voici mon test :
http://www.cjoint.com/c/FBmimziZaXa
Ce test représente mes données issues de 3 TCD, le fichier joint n’est qu’une
copie sans lien.

mon probleme est de faire les formats (standard 0, dollard 0.00$)

voici le ou j'en suis avec ce code,

Public strHTML As String, titre As String

Sub envoiPlageCellules()
Dim appOutlook As Outlook.Application
Dim oMail As Outlook.MailItem

Set appOutlook = CreateObject("outlook.application")
Set oMail = appOutlook.CreateItem(olMailItem)

Body_strHTML

With oMail
.Subject = "test - analyse et prix" 'Objet du mail
.HTMLBody = strHTML 'message du mail
.To = "" 'adapter à un mail valide
' .BodyFormat = olFormatHTML
' .Attachments.Add "C:test.pptx"
.Send
End With

Set appOutlook = Nothing
End Sub

Sub Body_strHTML()
titre = "Analyse(ici-attaché)" & Chr(12) & Chr(12) & " prix coutant"
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "<B><SPAN
STYLE='background-color:white;font-size:6mm'>" & titre & " :
</SPAN></B><BR><BR>"
strHTML = strHTML & "<TABLE BORDER>"

lgn = Application.Match("Total général", Sheets("TCD").Range("B:B"), 0)

For i = 4 To lgn 'nombre de lignes
strHTML = strHTML '& "<TR halign='middle'nowrap>"

For j = 2 To 11 'nombre de colonnes
Select Case j
Case 3 Or 8: aligne = "left"
Case 2 Or 5 Or 10: aligne = "center" ' format standard 0
Case 4 Or 6 Or 9 Or 11: ' format dollard 0.00$
End Select

strHTML = strHTML & "<TD bgcolor='white'align='" & aligne & "'><FONT
COLOR='blue'SIZE=2>" & Cells(i, j) & "</FONT></TD>"
Next j

strHTML = strHTML & "</TR>"
Next i

strHTML = strHTML & "</TABLE>"
strHTML = strHTML & "<BR><BR>Cordialement<BR>" & "isabelle"
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
End Sub

merci! pour votre aide
isabelle
Avatar
isabelle
merci! Daniel
isabelle

Le 2016-02-12 04:53, DanielCo a écrit :
Bonjour, Essaie : Sub envoiPlageCellules_Excel()
ActiveSheet.Range("A1:F20").Select ' la plage de cellules à envoyer
ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope .Item.Subject = "Demande de transport " &
Cells(10, 2).Value & " à " & Cells(14, 2) .Introduction = "Bonjour,
ci-dessous une demande de transport." .Item.Send End With End Sub (A partir
de Excel 2010 ou Excel 2013). Cordialement. Daniel