VBA : envoi d'un mail auto en fonction du contenu d'une cellule

Fermé
minia - 4 mai 2017 à 16:40
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 17 mars 2023 à 07:21
Bonjour,

Apres plusieurs jour de recherche je n'ai pas trouvé de réponse à ma question.

J'ai un tableau excel avec 3 colonnes, j'aimerai qu'une macro s'exécute automatiquement lorsqu'une cellule de la 3e colonne contient le texte "A valider" et envoi un mail contenant les textes écrit dans les 2 autres colonnes de la même ligne.

Exemple :

A1 B1 C1
A2 B2 C2
A3 B3 C3

Si C1 contient "A valider" -> envoi auto d'un mail contenant le texte "A1 et B1 sont disponibles" ou A1 et B1 sont les contenu des cellules.


Voila mon code actuellement :

Sub mail_auto_fin_procédure()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim L As String
L = "A valider" 'ne fonctionne que si c'est un nombre, j'ai une erreur de compilation quand c'est un texte
For L = "A valider" To Range("C65356").End(xlUp).Row
If Range("C" & L) = "A valider" Then

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

strbody = "A1 et B1 sont disponibles"

On Error Resume Next
With OutMail
.To = "***@***"
.CC = ""
.BCC = ""
.Subject = "A vérifier"
.Body = strbody
.Display 'utiliser .Send pour l'envoi du mail
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End If
Next L
End Sub

Merci pour votre aide.

6 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
4 mai 2017 à 17:23
Bonjour,

Sub mail_auto_fin_procédure()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String
    Dim L As Long

    With Worksheets("feuil1")    'adaptez le nom de feuille
        derlig = Range("C" & Rows.Count).End(xlUp).Row
        For L = 1 To derlig
            strbody = ""
            If Range("C" & L) = "A valider" Then
                Set OutApp = CreateObject("Outlook.Application")
                Set OutMail = OutApp.CreateItem(0)
                strbody = .Range("A" & L) & " et " & .Range("B" & L) & " sont disponibles"
                'On Error Resume Next
                With OutMail
                    .To = "xxxxxxxx@xxxxxx"
                    .CC = ""
                    .BCC = ""
                    .Subject = "A vérifier"
                    .Body = strbody
                    .Display 'visu @Mail
                    '.Send       ' pour l'envoi du @mail
                End With
                On Error GoTo 0
            End If
            Set OutMail = Nothing
            Set OutApp = Nothing
        Next L
    End With
End Sub
7

Bonjour,

Merci beaucoup pour ce code qui fonctionne très bien.

Cependant, je l'ai adapté pour envoyer un mail à chaque formateur mais ca envoie autant de mail que de fois ou le nom apparaît alors que je voudrais qu'il n'nvoie un mail que sur la dernière ligne ajoutée.

Est-ce possible ?

par exemple :

Cellule X31 : Vincent => envoie un mail

Cellule X32 : Vincent => envoie un mail (Alors qu’aujourd’hui ça envoie de nouveau le mail de la cellule X31 + X32 donc deux mails)

Merci beaucoup :)

Julien

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Julien54
15 mars 2023 à 11:05

Bonjour,

par exemple :

Cellule X31 : Vincent => envoie un mail

Cellule X32 : Vincent => envoie un mail (Alors qu’aujourd’hui ça envoie de nouveau le mail de la cellule X31 + X32 donc deux mails)

Pouvez mettre un fichier exemple a dispo car je suppose qu'il n'y a pas que Vincent

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...

0
Julien54 > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
15 mars 2023 à 13:34

Bonjour,

Merci beaucoup pour ta réponse.

Je peux te transmettre par mail ? car je ne peux pas me connecter à Cjoint avec mon portable pro !!.

J'ai deux soucis :

- Envoyer un mail (au formateur juste sur le dernier enregistrement)

- Je constate que ma fonction ne fonctionne que si mon classeur et ouvert sur la feuille "PowerBi" alors que dans l'idée c'est de jamais ouvrir le classseur et tout passer par "UserForm"

Merci encore !!

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Julien54
17 mars 2023 à 07:21

Bonjour,

Passez par la messagerie privee de ccm pour transmettre une adresse messagerie

0