Macro Excel envoi un email Outlook par destinataire

Bonjour,

Afin de gagner du temps sur un fichier au travail, je souhaiterai l'automatiser. Via ce fichier j'annonce chaque jour les volumes qui à différentes adresse email et je pense que l'on peut sans problème automatiser, j'ai déjà bien avancé mais je me retrouve bloqué.

pouvez-vous m'aidez svp ?

Dans mon fichier il y a les onglets de 1 à 28 soit un par jour, c'est à partir de ces onglets que je souhaite faire l'annonce en cliquant chaque jour sur le bouton "envoyer". La macro récupère le corps du mail, l'objet et le destinataire dans le tableau colonnes O, P et Q.

Pour le moment je ne travaille que sur l'onglet 1, quand cela fonctionnera je dupliquerai. Je me suis basé sur un fichier que j'ai trouvé sur internet qui permet d'envoyer un mail par destinataire.

Merci pour votre aide,

Julien

Bonjour Julien,

Que mets-tu en pièce jointe ? le tableau ? sous quelle forme (pdf, excel) ?

Bonsoir,

Il s'agit du fichier que j'ai vidé de son compte-tenu professionnel, il ne reste que le format et la macro.

Oufiz,

ok d'accord, c'est très bien, le fichier est ainsi anonymisé

mais ma question est : pour appeler la macro que tu as récupérée il faut le destinataire, le sujet, le texte (tout ceci tu dis où cela se trouve) mais aussi la pièce jointe ... faut-il la fabriquer ? en pdf ? à partir des infos du tableau (même si aujourd'hui il est vide) ?

j'ai revu ton fichier, je commence à comprendre, il n'y a pas de pièces jointes car tu ramènes les valeurs dans le corps du message

dans ce cas ta fonction est fausse, il faut lui enlever ce qui fait référence à la pièce jointe

Public Sub Envoyer(psObjet As String, psCorps As String, psAdresse As String)

    Dim ObjOutlook As Object
    Dim objMail As Object

    Set ObjOutlook = New Outlook.Application
    'Set ObjOutlook = CreateObject("Outlook.Application")
    Set objMail = ObjOutlook.CreateItem(olMailItem)

    With objMail
        .To = psAdresse ' le destinataire
        .Subject = psObjet ' l'objet du mail
        .Body = psCorps   'le corps du mail ..son contenu
        .GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
        .Send
    End With
    'ObjOutlook.Quit

    Set objMail = Nothing
    Set ObjOutlook = Nothing

End Sub

J'espère que le reste de la fonction est correcte (je n'ai jamais utilisé GetInspector)


Remplace ta procédure

Private Sub cmdEnvoi_Click()

    Dim iLig As Integer
    Dim bFin As Boolean
    Dim sObjet As String
    Dim sCorps As String
    Dim sAdresse As String
    Dim sPJ As String

        sObjet = Range("P10").Value

    bFin = False
    iLig = 2

    While Not bFin
        sCorps = Range("P" & iLig).Value
        sAdresse = Range("Q" & iLig).Value
        modMail.Envoyer sObjet, sCorps, sAdresse
        iLig = iLig + 1
        If Range("O" & iLig).Value = "" Then
            bFin = True
        End If
    Wend

End Sub

par

Private Sub cmdEnvoi_Click()

Dim derligne%, i%
derligne = Cells(Application.Rows.Count, "0").End(xlUp).Row
For ligne = 2 To derligne - 1
    Envoyer Cells(derligne, "P"), Cells(ligne, "P"), Cells(ligne, "Q")
Next

End Sub

pas testé car les mails partent de suite ...

Rechercher des sujets similaires à "macro envoi email outlook destinataire"