Re : Macro envoimail associer à fonction SI
Bonsoir à tous
sylvain974
Configuration1
Les macros suivantes Sub AlerteECHEANCE() et Private Function Send_Mail() sont stockés dans module standard (ALT+F11 -> Menu Insertion/Module)
Pour tester j'ai ajouté cette petite macro de test: TestduIf
(Copies ces macros dans le module d'un classeur vierge et lance la macro TestduIf
[TABLE="width: 765, align: center"]
[TR]
[TD]
Sub TestduIF()
Dim datesTest, i As Byte
datesTest = Array(1, 3, 7, 9, 11)
For i = LBound(datesTest) To UBound(datesTest)
Range("G4") = _
DateAdd("d", CDbl(datesTest(i)), Date - 15)
Call AlerteECHEANCE
Next
End Sub
[/TD]
[TD]Sub AlerteECHEANCE()
If Range("G4") > Date - 7 Then
MsgBox "Arrive à échéance.", 16, "Attention!"
Send_Mail
Else
MsgBox "ok"
End If
End Sub
[/TD]
[/TR]
[TR]
[TD]
Private Function Send_Mail()
On Error Resume Next
'juste pour tester si le "SI" fonctionne
MsgBox "Test ->" _
& vbCrLf & "Simule l'envoie de mail", vbExclamation, "Test"
'With CreateObject("Outlook.Application").CreateItem(0)
' .To = "mon adresse"
' .Subject = "Fin de validité"
' .Body = "Bonjour La date de validité du" _
& "contrôle technique arrive à terme," _
& " n'oubliez pas de l'actualiser"
' .Send
'End With
On Error GoTo 0
End Function
[/TD]
[TD]
[/TD]
[/TR]
[/TABLE]
Tu remarqueras que cela fonctionne, non ?
Donc pour tester l'envoi d'un mail, il suffit de refaire le test en supprimant la ligne
MsgBox "Test ->" _& vbCrLf & "Simule l'envoie de mail", vbExclamation, "Test"
et de dé-commenter les autres lignes de code en supprimant le guillemet en début de ligneNB. ne pas supprimer de guillemet devant les lignes vertes qui sont des lignes de commentaires.
Configuration2
On utilise une procédure Private Sub Worksheet_Change(ByVal Target As Range)
(qui comme indiqué précédemment doit être stocké dans le code de la feuille où on teste la valeur de G4)
Et on doit avoir dans un module la function Send_Mail à laquelle on aura remplacé le préfixe Private par Public.