Envoyer un mail par VBA avec des cellules copiées

Bonjour à tous,

je souhaite envoyer par mail, un tableau qui est dans un de mes onglets

Très précisément il va s'agir de copier des cellules, située dans le 8ème onglet, selon un nom qu'on aura cliqué dans un onglet mail.

J'ai trouvé comment envoyer un mail en reprenant des exemples citées sur un autre site mais je voudrai ajouter les cellules copiées ou sélectionnées.

Sub TestEnvoiEmail()

Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer
Dim e As Integer

a = 5
b = 1

nom:
Range("T7") = a
Range("u7") = b
If Sheets("Planning des jeunes").Cells(a, b) = Cells(9, 20) Then GoTo edt
a = a + 31
If a > 284 Then
a = 5
b = b + 7
If b > 8 Then Exit Sub
End If
GoTo nom

edt:
Sheets("Planning des jeunes").Select
a = Sheets("Mail").Range("T7")
b = Sheets("Mail").Range("u7")
ActiveSheet.Range("A183") = a
ActiveSheet.Range("B183") = b
c = a - 4
d = a + 22
e = b + 5
ActiveSheet.Range(ActiveSheet.Cells(c, b), ActiveSheet.Cells(d, e)).Select

'définition des variables
Dim MonSujet As String
Dim MonDestinataire As String
Dim MonContenu As String

'attribution des valeurs aux variables
MonSujet = "Emploi du temps de " & Sheets("Mail").Range("T9")
MonDestinataire = "machinchose@truc.fr"
MonContenu = "Bonjour, Voici l’emploi du temps de " & Sheets("Mail").Range("T9") & " pour la semaine prochaine. Cordialement, l'équipe éducative"
'que dois je mettre ici pour que j'ai mes cellules dans le mail
'les cellules à copier sont
'ActiveSheet.Range(ActiveSheet.Cells(c, b), ActiveSheet.Cells(d, e))
'ou Sheets(8) car les données sont en sheets(8)

    'test envoi de l'email
        Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu)

MsgBox "Test terminé..."

End Sub

Merci.

Ne tenais pas compte du bout de code sans doute dégueu du début de la macro. Ce qui m'intéresse c'est que mettre pour qu'il envoie les cellules copiées ou sélectionjnées

Merci d'avance

Est-ce que ton code EnvoyerEmail est programmé en htmlbody ?

Un programme pour transformer une plage en un tableau html à intégrer dans ton mail

Function tableauhtml(plage As Range) As String
Dim cel As Range
Set cel = plage.Cells(1, 1)
    tableauhtml = "<table>"
    For i = 1 To plage.Rows.Count
        tableauhtml = tableauhtml & "<tr>"
        For j = 1 To plage.Columns.Count
            tableauhtml = tableauhtml & "<td>" & texthtml(cel.Offset(i - 1, j - 1).Value) & "</td>"
        Next
        tableauhtml = tableauhtml & "</tr>"
    Next
    tableauhtml = tableauhtml & "</table>"
End Function

Function texthtml(texte As String)
    texthtml = ""
    For i = 1 To Len(texte)
        Select Case Asc(Mid(texte, i, 1))
        Case Is = 10
            texthtml = texthtml & "<br/>"
        Case Is = 39
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Is > 127
            texthtml = texthtml & "&#" & Application.Trim(Str(Asc(Mid(texte, i, 1)))) & ";"
        Case Else
            texthtml = texthtml & Mid(texte, i, 1)
        End Select
    Next
End Function

Bonjour et merci,

j'ai effectivement possibilité de l'envoyer en html.

 Call EnvoyerEmail("Test email HTML 1", "adresse@fournisseur.fr", "Ceci est un <strong>test</strong><br>avec les formats <span style=""color: #f55; font-weight: bold;"">HTML</span>...")

Cela appelle ce module

Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)

On Error GoTo EnvoyerEmailErreur

'définition des variables
Dim oOutlook As Outlook.Application
Dim WasOutlookOpen As Boolean
Dim oMailItem As Outlook.MailItem
Dim Body As Variant

Body = ContenuEmail

    'vérification si le Contenu du mail n'est pas vide. Si oui, email n'est pas envoyé. Si vous voulez pouvoir envoyer les email vides, mettez en commentaire les 4 lignes de code qui suivent.
    If (Body = False) Then
        MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
        Exit Sub
       End If

    'préparer Outlook
    PreparerOutlook oOutlook
    Set oMailItem = oOutlook.CreateItem(0)

    'création de l'email
    With oMailItem
        .To = Destinataire
        .Subject = Sujet

        'CHOIX DU FORMAT
        '----------------------
        'email formaté comme texte
            '.BodyFormat = olFormatRichText
            '.Body = Body

            'OU

        'email formaté comme HTML
            .BodyFormat = olFormatHTML
            .HTMLBody = "<html><p>" & Body & "</p></html>"
        '----------------------

        If PieceJointe <> "" Then .Attachments.Add PieceJointe

       .Display   '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
       .Save      '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
       .Send      '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
    End With

   'nettoyage...
    If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
    If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing

   Exit Sub

J'ai deux questions. Comment appeler la fonction qui a récupéré mon tableau (la fonction tableauhtml)

Et pouvez vous expliquer cette fonction.

Pour ma part je dois récupérer un tableau (copier les cellules) qui est en

Range(Sheet(8).Cells(c, b), Sheets(8).Cells(d, e))

Merci beaucoup

Essaie ceci

MonContenu = "Bonjour, Voici l’emploi du temps de " & Sheets("Mail").Range("T9") & " pour la semaine prochaine. Cordialement, l'équipe éducative<br>" & tableauhtml(ActiveSheet.Range(ActiveSheet.Cells(c, b), ActiveSheet.Cells(d, e)))
Call EnvoyerEmail(MonSujet, MonDestinataire, MonContenu)

La fonction a pour objet de balayer toutes les cellules et de mettre

avant et après l'ensemble les balises <table> et </table>

avant et après chaque ligne les balises <tr> et </tr>

avant et après chaque cellule <td> et <td>

Elle va aussi code tous les caractères ASCII supérieurs à 127

Merci beaucoup.

Je progresse dans mon apprentissage.

Ce n'est pas encore exactement ce que je veux mais je vais tenter de me débrouiller seul avant de revenir poser une question ici.

Merci beaucoup.

Bonne journée

Rechercher des sujets similaires à "envoyer mail vba copiees"