L'informatique à votre portée
L'informatique prêt-à-porter

Faites appel à moi pour vos formations
sur les dpts 81, 31, 82, 11 et 67 (Strasbourg)
Confiez moi vos développements Office

FacebookTwitterGoogle BookmarksLinkedin

Envoyer un E-mail

Imprimer E-mail
5 mars 2014

Grâce à un lien hypertexte

Il suffit de construire un lien hypertexte MailTo en respectant sa syntaxe : mailto:Address[;MoreAddresses] [&Subject][&Body][&CC] [&BCC]

Addresse : une ou plusieurs adresses e-mail valides séparées par un point-virgule. N'utilisez que des caractères autorisés. Utilisez &nbps; pour les espaces. Seul ce paramètre est obligatoire
Subject : le texte qui apparaîtra dans l'objet du message.
Body: le corps du message.
CC : l'adresse à inclure dans la section "cc" (copie à).
BCC : l'adresse à inclure dans la section "bcc" (copie cachée à).

Vous devez ajouter un ? après la liste des destinataires, puis chaque paramètre doit être précédé par un &

Sub MailTo()
    Dim sLien As String
    
    sLien = "mailto:" & Range("Destinataire") & "?"
    sLien = sLien & "Subject=" & Range("Objet")
    sLien = sLien & "&Body=" & ActiveCell.Text
    If Range("DestCc") <> "" Then sLien = sLien & "&cc=" & Range("DestCc")
    If Range("DestBcc") <> "" Then sLien = sLien & "&bcc=" & Range("DestBcc")
    
    ActiveWorkbook.FollowHyperlink sLien
End Sub

Avec le classeur actif en pièce jointe

Pour automatiser l'envoi d'un classeur ouvert en pièce jointe, vous pouvez utiliser la boite de dialogue d'envoi standard d'Excel .
Les 3 arguments que vous pouvez assignés à cette boite de dialogue sont :

  1. recipients : le ou les destinataires. S'il y a plusieurs destinataires, vous devez utiliser un tableau pour affecter l'ensemble des destinataires.
  2. subject : correspond au sujet de votre message.
  3. return_receipt : doit être mis à true si vous voulez avoir un accusé de lecture

Dans l'exemple qui suit, les courriels des destinataires sont inscrits dans la plage D2:D30

Sub EnvoiXlMail()
    Dim sDest(), sSujet As String
    
    sDest = Range("D2:D3")
    sSujet = "Envoi du classeur"
    Application.Dialogs(xlDialogSendMail).Show sDest, sSujet, True
End Sub

sDest est déclaré comme tableau, étant donné que je lui attribue ensuite les valeurs d'une plage (possible car une plage est un tableau en soi), il est impératif que le type de ce tableau soit variant