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 = "mondestinataire@adresse.com "
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 :

Sub envoi_contenu()
'
' 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 = "destinataire@mail.com "
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.

Sub envoi_contenu_formaté()

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 = "destinataire@mail.com "
OItem.Subject = "objet du mail"
OItem.Send