VBA : envoi d'un mail auto en fonction du contenu d'une cellule
minia
-
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17414 Date d'inscription Statut Membre Dernière intervention -
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.
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.
A voir également:
- Envoyer une alerte mail depuis excel
- Incompatibilité de type vba ✓ - Forum Programmation
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
6 réponses
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
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
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...
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 !!
Bonjour,
Passez par la messagerie privee de ccm pour transmettre une adresse messagerie