Envoi Mail d'après cellule

4envoi-mail-v1.xlsm (39.69 Ko)

Bonjour,

Etant novice en VBA je sollicite votre aide pour trouver une macro qui permet d'envoyer un mail d'après la valeur d'une cellule J7 et L7.

Si la valeur en colonne J et L sont à 100% alors envoi du mail, ordre d'envoyé le mail peut être mis en colonne A

Chaque ligne correspond à un produit, donc je dois pouvoir envoyé un mail pour chaque ligne

En PJ mon fichier qui possède déjà une macro qui va récupérer les informations pour les synthétiser.

J'aimerais que la macro envoi un mail a une ou plusieurs personnes avec un texte pré défini dans l'excel Feuil1 C9.

L'objet du mail serait: PDF plus l'info en colonne C dans mon cas C7 (robot) donc PDF Robot.

Mot de passe de la macro actuelle: Aliyah

merci par avance.

Bonjour,

A tester voir adapter. Fonctionnel chez moi avec le fichier fourni :

Sub MAIL()
Dim objOutlook As Object
Dim objEmail As Object
Dim LR%, L%
With Worksheets("Synthese Projet")
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    For L = 7 To LR
        If .Cells(L, 10) = 1 And .Cells(L, 12) = 1 Then
            Set objOutlook = CreateObject("Outlook.Application")
            Set objEmail = objOutlook.CreateItem(olMailItem)
            With objEmail
                .To = Worksheets("Feuil1").[C4] & ";" & Worksheets("Feuil1").[C5] & ";" & Worksheets("Feuil1").[C6]
                .Subject = "PDF " & Worksheets("Synthese Projet").Cells(L, 3)
                .HTMLBody = Worksheets("Feuil1").[C9]
                .Display 'A remplacer par Send pour envoyer directement
            End With
            .Cells(L, 1) = "Envoyé"
        End If
    Next L
End With
End Sub

A placer dans un module standard et non un module de feuille.

Cdlt,

Bonjour,

Je viens de tester et cela fonctionne bien, j'ai mis un bouton pour envoyé le mail.

Le petit souci par exemple pour la ligne 7 et 8 il a envoyé le mail très bien mais pour la ligne 9 lorsque j'appui sur le bouton il renvoi un mail pour la ligne 7, 8 et 9.

Du cou^p pour un ligne le mail est envoyé autant de fois que l'on appuiera.

Y a t'il la possibilité de mettre un case à cocher qui bloque l'envoi ou on mot pour éviter d'avoir des mail répétitif?

8envoi-mail-v1.xlsm (56.61 Ko)

Bonjour,

Dans ce cas on ajoute juste une petite condition avec contrôle en colonne A qu'il n'y a pas déjà envoyé :

Sub MAIL()
Dim objOutlook As Object
Dim objEmail As Object
Dim LR%, L%
With Worksheets("Synthese Projet")
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    For L = 7 To LR
        If .Cells(L, 10) = 1 And .Cells(L, 12) = 1 And .Cells(L, 1) <> "Envoyé" Then
            Set objOutlook = CreateObject("Outlook.Application")
            Set objEmail = objOutlook.CreateItem(olMailItem)
            With objEmail
                .To = Worksheets("Feuil1").[C4] & ";" & Worksheets("Feuil1").[C5] & ";" & Worksheets("Feuil1").[C6]
                .Subject = "PDF " & Worksheets("Synthese Projet").Cells(L, 3)
                .HTMLBody = Worksheets("Feuil1").[C9]
                .Display 'A remplacer par Send pour envoyer directement
            End With
            .Cells(L, 1) = "Envoyé"
        End If
    Next L
End With
End Sub

Cdlt,

Peux ton ajouter une signature ?

Sinon cela fonctionne niquel.

Bonjour,

Dans ce cas il faut faire apparaitre le mail avant de le remplir :

Sub MAIL()
Dim objOutlook As Object
Dim objEmail As Object
Dim LR%, L%
With Worksheets("Synthese Projet")
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    For L = 7 To LR
        If .Cells(L, 10) = 1 And .Cells(L, 12) = 1 And .Cells(L, 1) <> "Envoyé" Then
            Set objOutlook = CreateObject("Outlook.Application")
            Set objEmail = objOutlook.CreateItem(olMailItem)
            With objEmail
                .Display
                .To = Worksheets("Feuil1").[C4] & ";" & Worksheets("Feuil1").[C5] & ";" & Worksheets("Feuil1").[C6]
                .Subject = "PDF " & Worksheets("Synthese Projet").Cells(L, 3)
                .HTMLBody = Worksheets("Feuil1").[C9] & .HTMLBody
            End With
            .Cells(L, 1) = "Envoyé"
        End If
    Next L
End With
End Sub

Cdlt,

Dans la macro on pointe sur la cellule C9 pour le texte, si je souhaite également ajouter un texte en C10 voir C11 comment faire pour qu'il soit pris en compte ?

Bonjour,

Merci de donner l'ensemble de vos besoins d'un coup afin de m'éviter de reprendre le code à chaque fois :

Sub MAIL()
Dim objOutlook As Object
Dim objEmail As Object
Dim LR%, L%
With Worksheets("Synthese Projet")
    LR = .Cells(.Rows.Count, 2).End(xlUp).Row
    For L = 7 To LR
        If .Cells(L, 10) = 1 And .Cells(L, 12) = 1 And .Cells(L, 1) <> "Envoyé" Then
            Set objOutlook = CreateObject("Outlook.Application")
            Set objEmail = objOutlook.CreateItem(olMailItem)
            With objEmail
                .Display
                .To = Worksheets("Feuil1").[C4] & ";" & Worksheets("Feuil1").[C5] & ";" & Worksheets("Feuil1").[C6]
                .Subject = "PDF " & Worksheets("Synthese Projet").Cells(L, 3)
                .HTMLBody = Worksheets("Feuil1").[C9] & Worksheets("Feuil1").[C10] & Worksheets("Feuil1").[C11] & .HTMLBody
            End With
            .Cells(L, 1) = "Envoyé"
        End If
    Next L
End With
End Sub

Cdlt,

Bonjour,

Merci pour la solution.

Rechercher des sujets similaires à "envoi mail"