Bonjour à vous,
Je me permets de vous solliciter car je rencontre une difficulté pour automatiser l'envoi de mails depuis mon tableur (vous trouverez le détail de mon besoin en fichier joint).
Je me suis inspiré de cette proposition pour créer ma macro en la mixant avec cette macro :
La macro fonctionne dans un simple tableau avec une
seule colonne de date. La voici :
Cependant mon besoin
porte sur un nombre important de colonnes de dates à cibler pour l'envoi des mails (ainsi que sur plusieurs projets).
Par ailleurs, je souhaite différencier le destinataire selon le projet en question.
Et ajouter un autre destinataire en copie.
Je précise que je débute en VBA, j'ai essayé de trouver des exemples qui correspondraient à mon besoin mais je n'ai pas trouvé de solution adéquate. J'ai essayé de m'inspirer de ce qui existantait, mais cette méthode a clairement ses limites.
Donc si quelqu'un aurait un peu de temps à consacrer à ce problème, je lui en serais vraiment reconnaissant. Merci par avance.
Je me permets de vous solliciter car je rencontre une difficulté pour automatiser l'envoi de mails depuis mon tableur (vous trouverez le détail de mon besoin en fichier joint).
Je me suis inspiré de cette proposition pour créer ma macro en la mixant avec cette macro :
VB:
Sub Alertes()
Dim C As Range, OL As Object, M As Object, Plage As Range
Set olApp = CreateObject("Outlook.application")
With Sheets("Feuil1")
Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each C In Plage
If C.Offset(, 1) - Date = 3 Then
Set M = olApp.CreateItem(olMailItem)
With M
.Subject = C.Offset(, 3)
.Body = C.Offset(, 4)
.Recipients.Add C.Offset(, 2)
'.display
.Send
End With
End If
Next C
End Sub
La macro fonctionne dans un simple tableau avec une
seule colonne de date. La voici :
VB:
Sub EnvoiMailCDO()
Dim C As Range, OL As Object, M As Object, Plage As Range
Set olApp = CreateObject("CDO.Configuration")
With Sheets("Feuil2")
Set Plage = .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
End With
For Each C In Plage
If C.Offset(, 5) - Date = 3 Then
Set mConfig = CreateObject("CDO.Configuration")
mConfig.Load -1
Set mChps = mConfig.Fields
With mChps
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "***@gmail.com "
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "****"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "True"
.Update
End With
Set mMessage = CreateObject("CDO.Message")
With mMessage
Set .Configuration = mConfig
.To = C.Offset(, 2)
.From = "***"
.Subject = "Echéance projet *** à venir"
.TextBody = C.Offset(, 4).Text & "Bonjour, je vous informe que d'ici 3 jours il conviendra de **"
.Send
End With
End If
Next C
End Sub
Cependant mon besoin
porte sur un nombre important de colonnes de dates à cibler pour l'envoi des mails (ainsi que sur plusieurs projets).
Par ailleurs, je souhaite différencier le destinataire selon le projet en question.
Et ajouter un autre destinataire en copie.
Je précise que je débute en VBA, j'ai essayé de trouver des exemples qui correspondraient à mon besoin mais je n'ai pas trouvé de solution adéquate. J'ai essayé de m'inspirer de ce qui existantait, mais cette méthode a clairement ses limites.
Donc si quelqu'un aurait un peu de temps à consacrer à ce problème, je lui en serais vraiment reconnaissant. Merci par avance.
Pièces jointes
Dernière édition: