[sociallocker id=5467][/sociallocker]
Comment envoyer un tableau dans le corps d’un e-mail Outlook en VBA avec Excel de moins de 7 min.
EXCEL OUTLOOK – Envoi mail: Macro excel envoi email avec tableau dans corps du message
Version Dailymotion :
EXCEL_2007_OUTLOOK_VBA_TABLEAU_CORPS_MAIL
Exemple de l’interface facture : J’ai repris la vidéo sur EXCEL_2007_OUTLOOK_ Envoi mail_VBA_PIECE_JOINTE, que j’ai modifié afin de faire un exemple insertion de tableau, issue d’une plage de cellule d’une des feuilles du fichier Excel pour le corps du message Outlook via Excel VBA.
1) Pour l’ envoi e -mail : Il y à quelques paramètres à regarder, comme dans le VBA, menu outils– références et cocher comme ci-dessous : 0) Cocher les options Adobe Acrobat et Outlook 14.0 object librairy :
2) Aperçu lors de la génération de l’e-mail par VBA Excel : Le lancement de la macro, génère le pré-remplissage des champs en mode .display sur code source VBA. Aperçu de la sélection du tableau :
3) Exemple de génération en mode .display (Code VBA ) fichier reçu (destinataire) : pré -remplissage du message sur le fichier Excel…
4) Exemple de fichier reçu (destinataire) : Voilà le résultat pour le destinataire, avec une messagerie Outlook…
5) Exemple de fichier reçu (destinataire) : Voilà le résultat pour le destinataire, avec une messagerie Gmail…
Code source VBA : sans doute à optimiser, mais voilà comment je l’ai réalisé
Voilà le fichier Excel : EXCEL_2007_OUTLOOK_VBA_TABLEAU_CORPS_MAIL
N’hésitez pas à m’écrire à contact.ingideo@gmail.com , si cela vous plaît, ou si vous avez des questions. Pour s’inscrire à la newsletter, suivez ce lien.
SPECIAL PACK OUTLOOK :
Liens vers le fichier spécial pack compilation OUTLOOK
Article interessant même si je ne suis pas d’accord à 100%
Merci, je suis un autodidacte, n’hésitez pas à m’éclairer pour faire mieux.
Vous avez fait une démonstration magistrale ! merci
Bonjour,
Je voudrais pouvoir faire exactement la même chose mais en envoyant le courriel depuis Windows Live Mail.
Est-ce que c’est possible ?
Merci
Bonjour,
Jai fait ceci et ca ne marche pas, j’ai un message qui me dit « Erreur de compilation, type défini par l’utilisateur non défini »
Que dois-je faire?
Merci d’avance
Option Explicit
Sub SendEmailUO_TABLEAU()
‘Utilise la liaison anticipée
‘Requiert une référence à la bibliothèque d’objets Outlook
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.MailItem
Dim cell As Range
Dim Projet, EmailAddr, EmailAddrCC, Msg, Subj As String
Dim TEXTE_AVANT, TEXTE_APRES, ALERTE As String
TEXTE_AVANT = Sheets(« Feuil1 »).Range(« C18 »)
TEXTE_APRES = Sheets(« Feuil1 »).Range(« 20 »)
ALERT = Sheets(« Feuil1 »).Range(« E5:E8 »)
EmailAddr = Sheets(« Feuil1 »).Range(« B12 »)
EmailAddrCC = Sheets(« Feuil1 »).Range(« B13 »)
Sheets(« Feuil1 »).Select
‘Alerte date marché en cours
Set OutlookApp = New Outlook.Application
‘Merci de trouver les marchés en dours dont l’échéance arrive à terme
Subj = Sheets(« Feuil1 »).Range(« B14 »)
ActiveSheet.Range(« C4:E8 »).Select ‘C18
ActiveWorkbook.EnvelopeVisible = True
Sheets(« Feuil1 »).Range(« C4:E8 »).Select
Selection.Copy
Msg = Msg & TEXTE_APRES ‘ la plage de cellules à envoyer cellule B12
Msg = Msg & « Cordialement »
Msg = Msg & « Céline KOSCIUSZKO »
With ActiveSheet.MailEnvelope
.Introduction = Msg
.Item.To = EmailAddr
.Item.CC = EmailAddreCC
.Item.Subject = Subj
.Item.Display
‘.Item.Send
End With
Set MItem = OutlookApp.CreateItem
End Sub
Bonjour Céline,
Je t’ai fais un retour ce matin, il manquait peu de chose, j’espère que le fichier exemple te plaira.
Alexandre
Bonjour !
J’ai réussi a trouver un code VBA afin d’envoyer un mail+PJ ( page active du classeur) via Outlook + corps de texte.
Les mails des destinataires sont dans la feuille n°2 de mon classeur ( renommée « MAIL’).
Cependant, je n’arrive pas a utiliser ces adresses comme destinataire.
WithOLmail
.To = [B95]
.CC = « »
.Subject = « Rapport
avec .TO, je n’arrive pas lier autre chose qu’une cellule ou adresse mail…. j’aimerais en l’occurrence envoyer ce mail aux destinataires présents dans la feuill MAIL.
ci-dessous l’ensemble du code.
SubSendWithAtt()
‘ Nécessite la référence : Microsoft Outlook 1x Object Library
Dim olApp As Outlook.Application
Dim OLmail As MailItem
Dim CurFile As String
Set olApp = New Outlook.Application
Set OLmail = olApp.CreateItem(olMailItem)
‘ « C:\Users\Thierry\AppData\Local\Temp\MaFeuille.pdf »
CurFile = ThisWorkbook.Path& « \ » & « RapportJournalierT4.Pdf »
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CurFile, _
Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
WithOLmail
.To = [B95]
.Subject = « Rapport Journalier »
.Body = « Bonjour, » & Chr(10) & Chr(13) & « Ci-joint le Rapport du » &Format(Date, « dd/mm/yy ») & Chr(10) & Chr(13) & « Bonne réception, » & Chr(10) & Chr(13) & « Cordialement »
.Attachments.AddCurFile
‘.Attachments.Add « c:\My Documents\book.doc »
.Send
End With
MsgBox « Merci de vérifier que le message apparait dans -messages envoyés- dans votre messagerie OUTLOOK. »
‘ Effacer les variables objets
Set OLmail = Nothing
Set olApp = Nothing
End Sub
J’ai réussi à trouver une solution, grâce à ce code=> Dest = Sheets(« MAIL »).Range(« A1:A199 »).Value
Cependant, avec ce dernier je n’arrive plus a envoyer de corps de mail….
Avec la fonction SENDMAIL ça ne fonctionne pas.
J’ai essayé de « bidouiller » en vain.
Quelqu’un pour m’aider ??
Par avance MERCI ! Ci dessous le code permettant d’envoyer mon mail à ma liste présente dans la feuilleMAIL mais … au détriment
de mon corps de texte.
Sub EnvoiMail2()
Texte = Texte & « Bonjour, » & vbCrLf
Texte = Texte & vbCrLf
Texte = Texte & « Vous trouverez ci-joint » & vbCrLf
Texte = Texte & vbCrLf
Texte = Texte & « Cordialement » & vbCrLf
Texte = Texte & vbCrLf
Texte = Texte & « » & vbCrLf
‘ Loop to cycle through each cell in the specified range.
For Each x In Range(« G15:G15 »)
‘ Change the text in the range to uppercase letters.
x.Value = UCase(x.Value)
Next
Dest = Sheets(« MAIL »).Range(« A1:A199 »).Value
Sujet = « Envoi d’une »
Body = Texte
ActiveWorkbook.SendMail Dest, Sujet, True
Application.DisplayAlerts = False
Application.DisplayAlerts = True
End Sub
Bonjour Emmanuel,
Je t’ai fais un retour ce midi, il manquait peu de chose, j’espère que le fichier exemple te plaira.
Alexandre
Bonjour Alexandre,
Tout d’abord, merci beaucoup pour cette macro qui fonctionne très bien !
Petit détail : j’aimerai changer la police du corps de texte, mais je n’y arrive pas…
Pourrais-tu m’aider ?
Merci encore !
Bonjour,
Merci beaucoup pour cette vidéo, très claire et utile, mais j’ai le même problème que Manon…
j’aimerai changer la police du corps de texte, mais je n’y arrive pas…
Pouvez vous m’aider?
Merci
Bonjour Alexandre,
Merci pour ce tuto vraiment très clair et détaillé !
Avec tes commentaires et explications, mon fils de 10 ans qui n’a jamais ouvert un PC pourrait s’en sortir 🙂
Au top !!!
Bonjour,
Je voudrais savoir s’il y a la possibilité pour le destinataire d’effectuer des modifications sur le tableau et le renvoyer après modifs.
Merci d’avance