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 ».

Message erreur CDO Microsoft envoi mail vba

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.

vba-CDO-code-envoi-mail-vba-openhost