Vous êtes nombreux à nous avoir demandé comment il est possible d’envoyer un e-mail avec du code VBA depuis une application Office (Word, Excel, Access,…)
Voici donc une solution très simple pour réaliser cette fonction.
En synthèse il vous suffit de créer un « module » au sein de votre projet VBA et d’y ajouter le code suivant.
Important : N’oubliez pas d’ajouter la référence à l’objet suivant « Microsoft CDO for Windows 2000 Library » sous peine d’avoir une erreur lors de l’exécution « Type défini par l’utilisateur non défini ».
Mais revenons au code VBA :
‘Ce code vous est offert par OpenHost pour gérer l’envoi de vos mails via du code VBA
Option Compare Database
Public Const MAIL_SENDUSING = 2 Public Const MAIL_AUTHENTICATE = 1 Public Const MAIL_CPT_SENDUSR = MonAdresseMai@openhost.fr Public Const MAIL_CPT_SENDPASS = « MonLoginDeConnexion » Public Const MAIL_FROM = MonAdresseMail@openhost.fr Public Const MAIL_SMTP_SERVER = « exchange1.openhost.fr » Public Const MAIL_SMTP_SERVERPORT = 25 Public Function oh_SendMail(strDestinataire As String, strSujetMail As String, strContenuMail As String) As Boolean
‘ Cette procédure retourne FALSE en cas d’erreur d’expédition‘ Gestion des erreurs dans cette procédure On Error GoTo oh_SendMail_Err Dim i As Long ‘L’utilisation de l’objet CDO nécessite d’ajouter une référence dans votre projet VBA‘ Cet ajout se fait généralement par le menu « OUTILS-Références » de votre application Office‘ Microsoft CDO for Windows 2000 Library Dim objEmail As New CDO.Message
‘ Qui est l’expéditeur du MailobjEmail.From = MAIL_CPT_SENDUSR ‘ Qui est le destinataire du MailobjEmail.To = strDestinataire‘ Le sujet du MailobjEmail.Subject = strSujetMail ‘Le corps du messageobjEmail.TextBody = strContenuMail ‘ Les paramètres pour gérer l’authentification sur le serveur OpenHost With objEmail.Configuration.Fields .Item(CdoConfiguration.cdoSendUsingMethod) = MAIL_SENDUSING .Item(CdoConfiguration.cdoSMTPAuthenticate) = MAIL_AUTHENTICATE .Item(CdoConfiguration.cdoSendUserName) = MAIL_CPT_SENDUSR .Item(CdoConfiguration.cdoSendPassword) = MAIL_CPT_SENDPASS .Item(CdoConfiguration.cdoSMTPServer) = MAIL_SMTP_SERVER .Item(CdoConfiguration.cdoSMTPServerPort) = MAIL_SMTP_SERVERPORT .Update End With ‘Et c’est partie, on envoi le Mail‘Si une erreur se déclenche, le code VBA passe directement à la ligne oh_SendMail_Err: et n’ira‘ donc pas mettre oh_SendMail = True‘ la procédure oh_SendMail retournera donc la valeur FALSE objEmail.Send oh_SendMail = True Exit Function oh_SendMail_Err: MsgBox Err.Description oh_SendMail = False End Function |
Pour appeler la procédure d’envoi de mail « oh_SendMail » il vous suffit de passer en paramètre :
– Le destinataire du mail
– Le sujet du mail
– Le contenu du Mail
Exemple : oh_SendMail(‘Bob.marley@yahoo.fr‘ ,’Test de ce super code VBA ‘,’OpenHost c’est vraiment super !’)
La procédure oh_SendMail retourne « Vrai » si l’opération s’est bien déroulée.