Courriel automatique

Bonjour

Je joins un fichier qui représente mon projet que je veux réaliser et je vous explique ce que je cherche à faire.

J'ai 2 choix de message possibles qui sont:

Bonjour

- Nous sommes désolés de la situation, mais nous n'avons pas les articles que vous avez commandés en ce moment

ou

- Nous avons bien reçu votre commande et les articles seront envoyés aujourd'hui

En fonction de la valeur dans la colonne "H", le bon choix de message est fait et envoyer à l'adresse sur la même ligne, colonne "K". En fait, ce serait une boucle car la longueur de la liste est variable à chaque jour.

En colonne "I" ce serait d'avoir la confirmation d'envoi du message "message sent"

Toute aide sera grandement appréciée

Merci à l'avance!

Bonjour lyttonjr,

Voici le code à mettre dans un module et que vous pouvez utiliser

Sub EnvoiMail()
  ' Déclaration des variables utilisées dans le code
  Dim dLig As Long, Lig As Long
  Dim OutObj As Object, Email As Object
  Dim Sht As Worksheet
  Dim TxtBody As String, Msg(2) As String
  ' Initialiser les variables qui en ont besoin
  Msg(1) = "Nous sommes désolés de la situation, mais nous n'avons pas les articles que vous avez commandés en ce moment"
  Msg(2) = "Nous avons bien reçu votre commande et les articles seront envoyés aujourd'hui"
  ' Définir la feuille active
  Set Sht = ActiveSheet
  ' Créer une instance Outlook
  Set OutObj = CreateObject("Outlook.Application")
  ' Dernière ligne remplie
  dLig = Sht.Range("A" & Rows.Count).End(xlUp).Row
  ' Pour chaque ligne
  For Lig = 4 To dLig
    ' #Modif de 07:33
    ' Vérifier si mail envoyé, on passe la ligne
    If Sht.Range("I" & Lig).Value = "email envoyé" Then GoTo SuiteLig
    ' Création d'une instance Outlook pour envoyer un mail
    Set Email = OutObj.CreateItem(0)
    ' Avec mon objet Email
    With Email
      .Display  ' Afficher le mail pour afficher la signature
      ' Destinataire(s) du mail
      .to = Sht.Range("K" & Lig).Value
      ' Copie du mail
      '.CC = "emaildestinataire@fai.fr"
      ' Sujet de l'eMail
      .Subject = "Ceci est le sujet de mon mail"
      ' Mémoriser le body
      TxtBody = .HtmlBody
      ' Selon la valeur de H
      If Sht.Range("H" & Lig) = "yes" Then
        ' Corps du mail avec signature à la fin
        TxtBody = "Bonjour," & "<BR><BR>" & Msg(2) & "<BR><BR>Cordialement."
      Else
        TxtBody = "Bonjour," & "<BR><BR>" & Msg(1) & "<BR><BR>Cordialement."
      End If
      .HtmlBody = TxtBody & .HtmlBody
      ' Envoyer l'email
      '.Send
    End With
    ' #Modif de 07:33
    ' Inscire l'envoi en colonne I
    Sht.Range("I" & Lig).Value = "email envoyé"
    ' Effacer la vairable objet
    Set Email = Nothing
SuiteLig:
  Next Lig
  ' Effacer les variable objet
  Set Email = Nothing: Set OutObj = Nothing
End Sub

A+

Hello

Je commence par un gros merci pour le code.

Il manque juste la confirmation de l'envoi en colonne "I". Est-ce possible pour toi de me dépanner sur ce point?

Re,

J'ai modifié le code de mon post précédent

Bonjour

Si possible d'apporter une petite modification dans le code pour moi. En l'utilisant, je me suis rendu compte de ce besoin de modification.

If Sht.Range("H" & Lig) = "yes" Then code à modifier pour moi

si la valeur dans la cellule est "y" ou "Y", on envoi le message 2

si la valeur dans la cellule est "n" ou "N", on envoi le message 1

si la cellule est vide, on n'envoi au courriel.

Je suis content de ton aide car j'ai pu avancer dans mon projet.

Merci beaucoup!

Bonsoir yttonjr,

Voici une possibilité extrait du code

      ' Mémoriser le body
      TxtBody = .HtmlBody
      ' Selon la valeur en H est : y, Y, Yes, YES
      If InStr(1, Sht.Range("H" & Lig), "y", vbTextCompare) >= 0 Then
        ' Corps du mail avec signature à la fin
        TxtBody = "Bonjour, <BR><BR>" & Msg(2) & "<BR><BR>Cordialement."
        ' Sinon, si la valeur en H est : n, N, Non, NON
      ElseIf InStr(1, Sht.Range("H" & Lig), "n", vbTextCompare) >= 0 Then
        TxtBody = "Bonjour,<BR><BR>" & Msg(1) & "<BR><BR>Cordialement."
      Else ' Sinon ce que tu veux
        TxtBody = "Bonjour,<BR><BR>" & "<BR><BR>Cordialement."
      End If
      .HtmlBody = TxtBody & .HtmlBody

A+

Bonjour

Je ne sais pas si j'ai fait une erreur, mais le code ne semble pas fonctionner.

Si je laisse la colonne "H" vide, il envoi le courriel quand même avec le message 2.

En le modifiant, il fonctionne

' Mémoriser le body
TxtBody = .HtmlBody
' Selon la valeur en H est : y, Y, Yes, YES
If InStr(1, Sht.Range("H" & Lig), "y", vbTextCompare) > 0 Then
' Corps du mail avec signature à la fin
TxtBody = "Bonjour, <BR><BR>" & Msg(2) & "<BR><BR>Cordialement."

' Sinon, si la valeur en H est : n, N, Non, NON
ElseIf InStr(1, Sht.Range("H" & Lig), "n", vbTextCompare) >=0 Then
TxtBody = "Bonjour,<BR><BR>" & Msg(1) & "<BR><BR>Cordialement."

ElseIf Sht.Range("H" & Lig) = 0 Then Exit Sub ' Sinon ce que tu veux

End If
.HtmlBody = TxtBody & .HtmlBody

une légère correction

' Mémoriser le body

TxtBody = .HtmlBody

' Selon la valeur en H est : y, Y, Yes, YES

If InStr(1, Sht.Range("H" & Lig), "y", vbTextCompare) > 0 Then

' Corps du mail avec signature à la fin

TxtBody = "Bonjour, <BR><BR>" & Msg(2) & "<BR><BR>Cordialement."

' Sinon, si la valeur en H est : n, N, Non, NON

ElseIf InStr(1, Sht.Range("H" & Lig), "n", vbTextCompare) > 0 Then

TxtBody = "Bonjour,<BR><BR>" & Msg(1) & "<BR><BR>Cordialement."

ElseIf Sht.Range("H" & Lig) = 0 Then Exit Sub ' Sinon ce que tu veux

End If

.HtmlBody = TxtBody & .HtmlBody
Rechercher des sujets similaires à "courriel automatique"