Voici une macro qui fonctionne avec Outlook. Créer la macro et l'affecter à un bouton sur la barre d'outils :
Sub envoimail()
'
' envoie un mail avec la pièce jointe
'
Dim ol As Object, monItem As Object
Set ol = CreateObject("outlook.application")
Set monItem = ol.CreateItem(olMailItem)
monItem.To = "
monItem.Subject = "objet du mail"
monItem.Body = "Bonjour" & Chr(13) & Chr(13) & "Je vous prie de bien vouloir trouver blabla"
Set mondoc = monItem.Attachments
mondoc.Add ActiveDocument.FullName
monItem.Send
Set ol = Nothing
MsgBox "la demande a bien été transmise "
End Sub
On peut ajouter des variables à la place des constantes. Par exemple, si le destinataire varie, on ajoutera une inputbox en début de macro afin que l'utilisateur saisisse l'adresse du destinataire :
destinataire = InputBox("adresse du destinataire")
et à la place de l'adresse du destinataire en dur, on mettra :
monItem.To = destinataire
Attention, on parle bien ici d'envoyer le fichier en cours, et non pas d'envoyer un mail avec le contenu du fichier. En effet, au lieu d'envoyer le fichier, on pourrait décider d'envoyer le contenu du document. La macro serait ainsi faite :
'
' envoie un mail avec le contenu du document
'
Dim ol As Object, monItem As Object
Set ol = CreateObject("outlook.application")
Set monItem = ol.CreateItem(olMailItem)
monItem.To = "
monItem.Subject = "objet du mail"
monItem.Body = ActiveDocument.Range
monItem.Send
Set ol = Nothing
MsgBox "Mail envoyé"
End Sub
Cette macro fonctionne correctement à condition que le texte ne contiennent pas un formatage spécifique Word. En effet, vous allez ainsi envoyer du texte brut. Donc, pas d'images, de photos, de mise en forme particulière, pas de tableaux, etc.
Si votre document contient des mises en forme particulière il va falloir utiliser le Word Editor. Ne perdez quand même pas de vue que si le destinataire ne possède pas Outlook, ou bien s'il a décidé de ne recevoir que du texte brut, il ne recevra pas vos images, vos tableaux et vos mises en forme.
Ne perdez donc pas de vue que le résultat de cette macro dépend de la configuration de la messagerie des destinataires.
La macro suivante utilise le Word Editor. Avant de l'utiliser cette macro, vous devez ajouter la référence Microsoft Outlook Object Library : Menu Outils, Références : cochez Microsoft Outlook Object Library.
Cette macro crée un nouveau mail avec le texte de votre document. Vous ajouterez manuellement le ou les destinataires, l'objet et éventuellement un texte avant/après.
Dim OutlookApp As Outlook.Application
Dim oItem As Outlook.MailItem
On Error Resume Next
'lance Outlook s'il n'est pas actif
Set OutlookApp = GetObject(, "Outlook.Application")
If Err <> 0 Then
Set OutlookApp = CreateObject("Outlook.Application")
End If
'Creation d'un nouveau message avec le contenu du document
Set oItem = OutlookApp.CreateItem(olMailItem)
Selection.WholeStory
Selection.Copy
Selection.End = True
'instaure le WordEditor
Dim objInsp As Outlook.Inspector
Dim wdEditor As Word.Document
Set objInsp = oItem.GetInspector
Set wdEditor = objInsp.WordEditor
Dim x As Integer
wdEditor.range.PasteAndFormat wdPasteDefault
oItem.Display
'Clean up
Set oItem = Nothing
Set OutlookApp = Nothing
Set objInsp = Nothing
Set wdEditor = Nothing
End Sub
Vous pouvez bien entendu mettre le destinataire par défaut ainsi que l'objet, et faire en sorte que le mail soit envoyé sans intervention. Vous ajouterez alors les lignes suivantes après la ligne oItem.Display :
oItem.Display
OItem.To = "
OItem.Subject = "objet du mail"
OItem.Send