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 SubA+
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?
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 & .HtmlBodyA+
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 & .HtmlBodyune 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