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.

Rechercher des sujets similaires à "plage corps mail"