Envoie mail auto sous condition
Bonjour,
Alors voila mon projet, afin de me faciliter les tacher sur un tableau excel je voudrai qu'il m'envoie automatiquement un mail via outllook qand une condition est remplit;
voila ce que j'ai pçour le moment
ActiveCell.FormulaR1C1 = "31"
Range("G3").Select
ActiveCell.FormulaR1C1 = "0:10"
Range("H3").Select
ActiveWorkbook.Save
En colonne G, dès que quelqu'un met le chiffre 31 il remplit ensuite la colonne H ,et parfois d'autre cellule sur la meme ligne, et sauvegarde.
Ma condition du mail auto est simple; Si dans la collone G un 31 apparait, envoyer automaitquement un mail quand le fichier est sauvegarder.
(Sachant egalement que mon tableu va de la ligne 1 a 1000 je voudrais que chaque fois qu'un 31 est mis dans une celulle de la collone G le mail parte auto sans qu'il me renvoie automatiquement un mail auto de la ligne precedente)
en option pour evoluer cette macro j'aimerai que la colonne a b c d e et f soit copié en tant que message dans le mail.
Est-ce que sa parrait faisaible ou pas?
car je regarde sur pas mal de forum, je trouve des chose sur des mails auto mais sa fonctionne pas forcement ou bien outlook ce lance pour envoyer un message avec la piece jointe mais pas mail qui part en automatique, il fallait que je clic moi-même sur le bouton envoyer....
Donc je suis un peu dans les choux sa fais plus de trois mois que je suis dessus et je suis arrivé à pas grand chose...
Si une personne aurrait une idée pour ce programme sa serai
Merci d'avance
Bonjour, des macro d'email il y en a la pelle..Celle-ci a était faite par une personne d'ici dont j'ai oublié le nom d'ailleurs (mes excuses)
Sub mail()
Dim OutApp As Object, Outmail As Object
Dim quoi As String, qui As String
Set OutApp = CreateObject("outlook.application")
Set Outmail = OutApp.createitem(0)
quoi = "je fais un test"
qui = Feuil1.[a1]
On Error Resume Next
With Outmail
.To = qui
.CC = ""
.BCC = ""
.Subject = "test macro outlook"
.body = quoi
'.attachements.add ("C:\test.txt)
.send 'display
End With
On Error GoTo 0
Set Outmail = Nothing
Set OutApp = Nothing
End SubEnsuite pour l'automatisme c'est assez simple aussi,
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Value = 31 Then MsgBox "Envoi d'email"
End SubDonc la dans l'exemple, si j'écris 31 dans une des cases de la colonne 2 alors je lance un message box. Sauf qu'à la place de lancer un message box vous vous pouvez lancer votre macro d'email.
.send c'est pour envoyer directement
.display c'est pour simplement préparer le message sans l'envoyer
Et en fouillant encore un petit peu il y a ça aussi qui pourrait faire l'affaire...
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End SubSalut
Je te remercie d'avoir pris le temps de me répondre;
quand j'ai envoyé cette demande sur le forum j'ai trouvé ceci dans un site anglais
Sub Send_Email_Using_VBA()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Bcc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = "test vba "
Email_Send_From = "xxxx@xxxx.com"
Email_Send_To = "xxxx@xxxx.com"
Email_Body = "presque!!!!"
On Error GoTo debugs
Set Mail_Object = CreateObject("Outlook.Application")
Set Mail_Single = Mail_Object.CreateItem(0)
With Mail_Single
.Subject = Email_Subject
.To = Email_Send_To
.cc = Email_Cc
.BCC = Email_Bcc
.Body = Email_Body
.send
End With
debugs:
If Err.Description <> "" Then MsgBox Err.Description
End Sub
j'ai testé, quand je fais exécuté la macro; le mail par direct donc jusqu'a la c'est un bon point; j'ai essayé d'introduire ce que tu m'avais donné ;
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
pour que le le mail par automatiquement quand la collum deux ; valeur=31...
Ma derniere question ... comment on combine tout sa avec la macro du mail auto + la condition y-a t-il une ecriture qpecial a rajouter entre les deux ou pas?
Merci
Bonjour. je préfère préciser pour éviter les ambiguités
se code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Value = 31 Then MsgBox "Envoi d'email"
End Subn'est pas à mettre dans un "module" mais dans la page de la feuille où s'il y a 31...Sur la photo trouvée sur le net, les "pages" des feuilles sont là où il y a le numéro 3.
Ensuite, après le "then" il faut mettre l'action à effectuer car Then veut dire "alors" donc dans mon exemple, 'jai mis Msgbox "envoi d'email" mais vous il faut simplement mettre après le then le nom de la macro à effectuer, soit Send_Email_Using_VBA
ce qui donne ceci
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Value = 31 Then Send_Email_Using_VBA
End SubParfait, je te remercie infiniment, sa fonctionne nickel, je vais essayer de l'améliorer pour qu'il mette dans l"'email body "des choses automatiques mais sinon parfais.
Merci de ton aide
De rien et merci d'avoir dit merci ! Sa touche beaucoup