Code VBA pour envoyer un mail sous condition

Bonsoir,

Le but est de déclencher un mail en display lorsque la condition est remplit sur ma colonne. (Ex: C1=“x” -> le mail se déclenche).

(J’utilise Outlook)

Par contre le mail ne doit pas se créer chaque fois que l’on ouvre le fichier, j’ai donc fait comme ceci :

  • Colonne C = Condition remplit
  • Colonne D = bascule de la condition remplit de la colonne C pour indiquer l’envoie du mail
J’ai 5 étapes donc 10 colonnes (condition et bascule de ma condition après envoie du mail)

Ce qui je crois représente 5 boucles à créer (elles représentent chaque étapes). Sans oublier d’introduire la bascule sur la colonne à côté.

La liste de diffusion pour les 5 boucles se trouve sur une feuille a part mais dans le même classeur.

Dans l’objet du mail doit apparaître le contenu de 2 cellules de la ligne qui remplit la condition :

Ex: A1=“VBA” B1=“2018-07” C1=“x” D1=“” alors envoie du mail avec objet : VBA 2018-07

Après l’envoie du mail —> A1=“VBA” B1=“2018-07” C1=“” D1=“x”

Voilà je n’y connais absolument rien en écriture de macro, mais j’en ai besoin pour améliorer mon système de gestion.

Merci par avance.

Bonsoir,

une proposition

Sub aargh()
    With Sheets("feuil1")    ' à adapter
        dl = .Cells(Rows.Count, "C").End(xlUp).Row
        Set ol = CreateObject("Outlook.Application")
        For i = 1 To dl
            If .Cells(i, "C") = "x" Then
                Set olm = ol.CreateItem(0)
                With olm
                    .To = "Mail"
                    .Subject = .Cells(i, "A") & " " & .Cells(i, 2)
                    .body = "rien à dire"
                    .Display
                End With
                .Cells(i, "C") = ""
                .Cells(i, "D") = "x"
            End If
        Next i
    End With
End Sub

Bonjour,

Merci pour la proposition !

J’ai fais des tests. Et voilà ce qu’il en ressort :

  • Je n’arrive pas à récupérer la liste de diffusion (les adresses mails de la feuilles 2)
  • J’ai tenté de modifier : .Subject = .Cells(i, “A”) & ...... ça ne marche pas. L’objet du mail ne récupère pas les données de la colonne À et B de la ligne correspondante
  • la macro ne se déclenche pas automatiquement, il faut la faire s’executer

La limite de cette proposition :

Quand la macro s’éxecute Les mails en display s’ouvrent. Cependant, si je n’envoie pas le mail la bascule se fait quand même de la colonne C à D comme ci le mail avait été envoyé.

  • Je n’arrive pas à récupérer la liste de diffusion (les adresses mails de la feuilles 2)
  • J’ai tenté de modifier : .Subject = .Cells(i, “A”) & ...... ça ne marche pas. L’objet du mail ne récupère pas les données de la colonne À et B de la ligne correspondante
  • la macro ne se déclenche pas automatiquement, il faut la faire s’executer

La limite de cette proposition :

Quand la macro s’éxecute Les mails en display s’ouvrent. Cependant, si je n’envoie pas le mail la bascule se fait quand même de la colonne C à D comme ci le mail avait été envoyé.

pour accéder aux données de la feuille2 mettre (exemple pour accéder à la cellule A1 sur feuille2)

sheets("feuillle2").range("A1") ou sheets("feuille2").cells(1,"A")

pour un déclenchement automatique, il faut modifier la procédure existante en procédure événementielle.

pour une mise à jour du statut quand le mail est effectivement envoyé, il faut mettre l'envoi effectif du mail sous le contrôle de la macro.

Bonjour,

C'est bon la macro fonctionne correctement voici le codage final :

Code :

Sub aargh()

With Sheets("Feuille") ' à adapter

dl = .Cells(Rows.Count, "AH").End(xlUp).Row

Set ol = CreateObject("Outlook.Application")

For i = 1 To dl

If .Cells(i, "AH") = "x" Then

Set olm = ol.CreateItem(0)

With olm

.To = "mail; mail; mail; ..."

.CC = "mail; mail; ..."

.Subject = Sheets("Feuille").Cells(i, "AG")

.body = "Corps du mail à adapter"

.Display

.Save

End With

.Cells(i, "AH") = ""

.Cells(i, "AI") = "x"

End If

Next i

End With

End Sub

Pour info :

Dans le l’objet du mail je voulais récupérer deux cellules de la ligne concernée.

Pour cela j’ai utilisé la formule CONCATENER

Rechercher des sujets similaires à "code vba envoyer mail condition"