Bonjour à tous,
Je suis confronté à un léger problème qui est assez gênant. Dans le fichier de gestion, j'ai implémenté l'envoi automatique d'un mail à la personne qui est assigné à la tâche.
J'ai activé la librairie Microsoft Outlook 16. Sauf que certaines personnes qui utilisent ce logiciel n'ont pas la version 16 mais celle d'avant et ne peuvent pas utiliser le fichier sur le moment. Il faut que j'aille changer la version de la librairie et mettre celle qui disponible sur leur ordinateur.
Du coup, pour éviter ce genre de problème à l'avenir. Est-ce que c'est possible de se passer de la librairie de Excel et de pouvoir envoyer de messages ?
Ci-dessous, le code pour envoyer le mail qui utilise actuellement la librairie
'*************************
'Procédure d'envoi d'un mail
'*************************
Sub EnvoyerEmail(ByVal Sujet As String, ByVal Destinataire As String, ByVal ContenuEmail As String, Optional ByVal PieceJointe As String)
On Error GoTo EnvoyerEmailErreur
Dim oOutlook As Outlook.Application
Dim oMailItem As Outlook.MailItem
'vérification si le Contenu du mail n'est pas vide
If Len(ContenuEmail) = 0 Then
MsgBox "Mail non envoyé car vide", vbOKOnly, "Message"
Exit Sub
End If
'préparer Outlook
PreparerOutlook oOutlook
Set oMailItem = oOutlook.CreateItem(0)
'création de l'email
With oMailItem
.To = Destinataire
.Subject = Sujet
'email formaté comme HTML (aussi par défaut)
.BodyFormat = olFormatHTML
.HTMLBody = "<html><p>" & ContenuEmail & "</p></html>"
If PieceJointe <> "" Then .Attachments.Add PieceJointe
.Display 'affiche l'email
.Save 'sauvegarde l'email avant l'envoi
.Send 'envoie l'email
End With
'nettoyage...
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
Exit Sub
EnvoyerEmailErreur:
If (Not (oMailItem Is Nothing)) Then Set oMailItem = Nothing
If (Not (oOutlook Is Nothing)) Then Set oOutlook = Nothing
MsgBox "Le mail n'a pas pu être envoyé...", vbCritical, "Erreur"
End Sub
'*************************
'Procédure d'ouverture de Outlook au cas où
'*************************
Private Sub PreparerOutlook(ByRef oOutlook As Object)
On Error Resume Next
'vérification si Outlook est ouvert
Set oOutlook = GetObject(, "Outlook.Application")
If (Err.Number > 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
Err.Clear
Set oOutlook = CreateObject("Outlook.Application")
If (Err.Number > 0) Then
MsgBox "Une erreur est survenue lors de l'ouverture de Outlook..."
Exit Sub
Else
End If
Else 'si Outlook est ouvert, l'instance existante est utilisée
End If
End Sub
Bonne journée !
Lucas