Plage de cellules dans le corps d'un mail
Bonjour à tous!
Mille excuses si la question a été posée, mais je ne trouve pas de réponse que je puisse adapter, peut-être à cause de ma version d'Excel ( 2010)
Voilà , je voudrais envoyer un mail directement depuis Excel. J'ai créé un code qui fonctionne bien, sauf que dans le corps du mail je ne peux mettre qu'une seule cellule, je voudrais mettre toute une plage , avec sa mise en forme, ses images, ses liens.
Avec mes meilleurs sentiments.
Dim NomFichier As Variant
NomFichier = Range("N85")
Dim Email As Variant
Email = Range("J13")
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.Application")
Set MonMessage = MaMessagerie.CreateItem(0)
Dim Sujet As Variant
Sujet = Range("A16")
Dim Corps As Variant
Corps = Range("D107"): Voilà la ligne que je voudrais modifier. Si je mets une plage, cela ne fonctionne plus.
MonMessage.To = Email
MonMessage.CC = "Y******@msn.com"
MonMessage.BCC = "Y*******@msn.com"
MonMessage.Attachments.Add NomFichier
MonMessage.Subject = Sujet
MonMessage.Body = Corps
MonMessage.Display
Set MaMessagerie = Nothing
Bonjour Chelhydra,
Je te propose de remplacer la ligne :
Corps = Range("D107"): Voilà la ligne que je voudrais modifier. Si je mets une plage, cela ne fonctionne plus.
par :
Dim oCell As Range
For Each oCell In Range("D107:D109") 'A adapter aux coordonnées de la plage voulue
Corps = Corps & oCell.Value & " "
Next
Bonjour,
edit bonjour Gvialles
pour garder la mise en page d'excel tu dois passer par un format HTML et utiliser la propriété HTMLbody de ton message outlook.
essaie ceci
Sub aargh()
Dim NomFichier As Variant
NomFichier = Range("N85")
Dim Email As Variant
Email = Range("J13")
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.Application")
Set MonMessage = MaMessagerie.CreateItem(0)
Dim Sujet As Variant
Sujet = Range("A16")
Dim Corps As Variant
Corps = converthtml(Range("D107:E200"))
MonMessage.To = Email
MonMessage.CC = "Y******@msn.com"
MonMessage.BCC = "Y*******@msn.com"
MonMessage.Attachments.Add NomFichier
MonMessage.Subject = Sujet
MonMessage.HTMLBody = Corps
MonMessage.Display
Set MaMessagerie = Nothing
End Sub
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
Bonjour, et merci beaucoup de vos réponses!
Mille excuses, je réponds tard, habituellement j'ai un mail lorsqu'il y a une réponse, mais rien pour cette question, même en spam.
Les deux solutions ont marché du premier coup, juste un copier-coller à faire, super! Je n'ai pas compris tout le code VBA. A étudier.
La solution de Gvialles marche bien, elle permet de mettre beaucoup d'informations dans le corps du mail.
La solution d'H2so4 marche encore mieux, puisqu'elle permet de conserver la mise en page,le format, et même les objets.
Juste un tout petit bémol: le texte qui dépasse des cellules et qui s'affiche dans les cellules vides voisines ne s'affiche pas sur le mail, les cellules voisines sont pourtant bien dans la sélection. Pas grave, il suffit de créer une zone dédiée, avec des colonnes suffisamment larges.
Encore merci!
Avec mes meilleurs sentiments.
Bonsoir,
Merci pour ton retour.
Pour éviter ce problème de conversion avec l’outil de Microsoft, il est possible de coder soi-même la conversion, mais il y aura du boulot si tu veux prévoir tous les cas possibles.