Note: The other languages of the website are Google-translated. Back to English
English English

Comment envoyer un e-mail si le bouton est cliqué dans Excel?

Supposons que vous deviez envoyer un e-mail via Outlook en cliquant sur un bouton dans la feuille de calcul Excel, comment pouvez-vous faire? Cet article présentera une méthode VBA pour y parvenir en détail.

Envoyer un e-mail si le bouton est cliqué avec le code VBA


Envoyer un e-mail si le bouton est cliqué avec le code VBA

Veuillez procéder comme suit pour envoyer un e-mail via Outlook si vous cliquez sur un bouton de commande dans le classeur Excel.

1. Insérez un bouton de commande dans votre feuille de calcul en cliquant sur Développeur > insérer > Bouton de commande (contrôle ActiveX). Voir la capture d'écran:

2. Cliquez avec le bouton droit sur le bouton de commande inséré, puis cliquez sur Voir le code dans le menu contextuel comme ci-dessous la capture d'écran.

3. Dans l'ouverture Microsoft Visual Basic pour applications fenêtre, veuillez remplacer le code d'origine dans la fenêtre Code par le script VBA suivant.

Code VBA: envoyer un e-mail si le bouton est cliqué dans Excel

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Notes:

1). Veuillez modifier le corps de l'e-mail selon vos besoins dans le xMailCorps ligne dans le code.

2). Remplace le Adresse courriel avec l'adresse e-mail du destinataire en ligne .To = "Adresse e-mail".

3). Spécifiez les destinataires Cc et Cci dont vous avez besoin dans .CC = "" et des tours .Bcc = "" sections.

4). Changer l'objet de l'e-mail en ligne .Subject = "Tester l'envoi de l'e-mail en cliquant sur le bouton".

4. appuie sur le autre + Q touches simultanément pour fermer le Microsoft Visual Basic pour applications fenêtre.

5. Désactivez le mode de conception en cliquant sur Développeur > Mode de conception. Voir la capture d'écran:

Désormais, chaque fois que vous cliquez sur le bouton de commande, un e-mail sera créé automatiquement avec des destinataires, un objet et un corps spécifiés. Veuillez envoyer l'e-mail en cliquant sur le Envoyer .

Notes: Le code VBA ne fonctionne que lorsque vous utilisez Outlook comme programme de messagerie.

Envoyez facilement des e-mails via Outlook en fonction des champs de la liste de diffusion créée dans Excel:

La série Envoyer des emails utilité de Kutools pour Excel permet d'envoyer des e-mails via Outlook en fonction des champs de la liste de diffusion créée dans Excel.
Téléchargez et essayez-le maintenant! (Parcours gratuit de 30 jours)


Articles Liés:


Les meilleurs outils de productivité de bureau

Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe; Créer une liste de diffusion et envoyer des e-mails ...
  • Barre Super Formula (modifiez facilement plusieurs lignes de texte et de formule); Disposition de lecture (lire et modifier facilement un grand nombre de cellules); Coller dans la plage filtréeplus
  • Fusionner les cellules / lignes / colonnes sans perdre de données; Contenu des cellules divisées; Combiner des lignes / colonnes en double... Empêcher les cellules en double; Comparer les gammesplus
  • Sélectionnez Dupliquer ou Unique Lignes; Sélectionnez les lignes vides (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux classeurs; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de formule; Créer automatiquement des références à plusieurs feuilles; Insérer des puces, Cases à cocher et plus encore ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre le contenu et les commentaires des cellulesplus
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial par gras, italique ...
  • Combiner des classeurs et des feuilles de travail; Fusionner les tableaux en fonction des colonnes clés; Diviser les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDFplus
  • Plus de 300 fonctionnalités puissantes. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Essai gratuit de 30 jours. Garantie de remboursement de 60 jours.
onglet kte 201905

Office Tab apporte une interface à onglets à Office et simplifie considérablement votre travail

  • Activer l'édition et la lecture par onglets dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit des centaines de clics de souris chaque jour!
bas de cabine
Commentaires (73)
Noté 3.5 hors 5 · évaluations 1
Ce commentaire a été minimisé par le modérateur sur le site
Salut, je cherche à envoyer des données à partir d'un tableau croisé dynamique, pouvez-vous m'aider s'il vous plaît
Ce commentaire a été minimisé par le modérateur sur le site
Est-il possible d'écrire le script de sorte que lorsque vous cliquez sur le bouton, il se joint à l'e-mail comme ci-dessus, mais supprime également le bouton ? de sorte que la copie du fichier envoyé par e-mail ne comporte plus le bouton ?
Ce commentaire a été minimisé par le modérateur sur le site
Juste en dessous de ".Body = xMailBody" ajoutez ce qui suit
.Attachments.Add ActiveWorkbook.FullName
Ce commentaire a été minimisé par le modérateur sur le site
Salut Danie.

J'ai ajouté la partie comme vous l'avez dit, mais l'e-mail avec le classeur joint contient toujours les boutons.
Ce commentaire a été minimisé par le modérateur sur le site
salut est-il possible de le configurer pour que je n'aie pas à appuyer sur envoyer - il envoie automatiquement l'e-mail ????
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Veuillez remplacer la ligne .Afficher par .Envoyer le code VBA ci-dessus.
Ce commentaire a été minimisé par le modérateur sur le site
il ne génère qu'un seul e-mail et continue d'écraser le contenu au lieu d'ouvrir plusieurs brouillons d'e-mails.
Ce commentaire a été minimisé par le modérateur sur le site
Salut à tous tout d'abord un grand merci, ce message est très utile et fonctionne pour la pièce jointe. Cela fonctionne pour moi mais aucune mise à jour n'est enregistrée dans la feuille, vous devez appuyer sur le bouton Enregistrer. Je voudrais que la pièce jointe ait tout ce qui se trouve actuellement dans la feuille Excel.

Je peux accomplir cela en utilisant la fonction de messagerie intégrée d'Excel, mais je voulais un bouton car j'ai besoin de coder en dur l'adresse e-mail spécifique.

Donc en résumé j'aimerai savoir :

J'aimerais savoir s'il existe un moyen de: après qu'un utilisateur a ouvert le classeur Excel et apporté des modifications, si le bouton conservera la pièce jointe avec les mises à jour?
Ce commentaire a été minimisé par le modérateur sur le site
Good Day,
Le code a été optimisé. S'il vous plaît essayez et merci pour votre commentaire.

Private Sub CommandButton1_Click ()
'Mis à jour par Extendoffice 2017/9/14
Dim xOutApp en tant qu'objet
Estomper xOutMail en tant qu'objet
Estomper xMailBody en tant que chaîne
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Définir xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Sauvegarder
xMailBody = "Contenu du corps" & vbNewLine & vbNewLine & _
"Ceci est la ligne 1" & vbNewLine & _
"C'est la ligne 2"
On Error Resume Next
Avec xOutMail
.To = "Adresse e-mail"
.CC = ""
.BCC = ""
.Subject = "Tester l'envoi de l'e-mail en cliquant sur le bouton"
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Afficher 'ou utiliser .Envoyer
Terminer par
En cas d'erreur GoTo 0
Définir xOutMail = Rien
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je joindre le classeur actif à l'e-mail lorsque j'appuie sur le bouton ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Juste en dessous de ".Body = xMailBody" ajoutez ce qui suit
.Attachments.Add ActiveWorkbook.FullName
Ce commentaire a été minimisé par le modérateur sur le site
Teria como em vez de enviar a planilha, enviar as informações em imagem?
Ce commentaire a été minimisé par le modérateur sur le site
en utilisant ce code VBA, puis-je faire référence aux informations de cellule dans le corps de l'e-mail ? Par exemple, comment référencerais-je les valeurs des cellules dans le code ci-dessous ?

xMailBody = "Contenu du corps" & vbNewLine & vbNewLine & _
"Ceci est la ligne 1" & vbNewLine & _
"C'est la ligne 2"

Aussi, en utilisant le code (.TO = "adresse e-mail"). comment puis-je faire en sorte que "l'adresse e-mail" tire une adresse e-mail d'une cellule dans la colonne à côté.


Merci,
Ce commentaire a été minimisé par le modérateur sur le site
Est-il possible d'ajouter un deuxième bouton e-mail dans la même feuille de calcul ? Lorsque j'essaie de le faire, il se connecte au code du bouton de messagerie d'origine. Merci.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,
Vous devez attribuer des codes différents à chaque bouton.
Ce commentaire a été minimisé par le modérateur sur le site
en utilisant ce code VBA, puis-je faire référence aux informations de cellule dans le corps de l'e-mail ? Par exemple, comment référencerais-je les valeurs des cellules dans le code ci-dessous ?

xMailBody = "Contenu du corps" & vbNewLine & vbNewLine & _
"Ceci est la ligne 1" & vbNewLine & _
"C'est la ligne 2"

Merci,
Ce commentaire a été minimisé par le modérateur sur le site
Salut Glenn,
Veuillez appliquer le code suivant. Merci pour votre commentaire.
xMailBody = [B5]
Ce commentaire a été minimisé par le modérateur sur le site
Est-il possible, au lieu d'envoyer la pièce jointe dans le mail, d'envoyer un lien hypertexte vers le fichier (situé sur SharePoint) ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Laurie,
Je ne peux pas t'aider avec ça. Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Puis-je référencer la valeur dans une cellule du sujet avec une chaîne ? Une variante de ce qui suit ?

.Subject = "Nouvel événement :" & Target.Address = "$B$38"
Ce commentaire a été minimisé par le modérateur sur le site
Salut Abi,
Veuillez remplacer le code par .Subject = "New Event:" & [B38].
Merci pour votre commentaire.
Ce commentaire a été minimisé par le modérateur sur le site
Salut,
Quelqu'un peut-il m'aider sur l'exigence suivante?
J'ai une feuille Excel avec deux listes déroulantes.

1 liste déroulante - liste des départements

2 liste déroulante - catégorie

Ce que je veux, c'est quand je sélectionne un département et une catégorie dans les listes ; (par exemple, si je sélectionne "ventes" dans le département et "rapport mensuel" dans la catégorie)

Je dois envoyer par e-mail la version PDF de cette feuille de travail à l'équipe de vente avec pour objet le rapport mensuel.

Si je sélectionne "production" dans la liste des départements, l'e-mail doit être envoyé à un groupe de personnes de la production.

J'apprécie si vous pouvez m'aider à ce sujet

Rasike
Ce commentaire a été minimisé par le modérateur sur le site
Salut Rasike,
Désolé, je ne peux pas vous aider. Bienvenue à poster toute question dans notre forum: https://www.extendoffice.com/forum.html pour obtenir plus de support Excel de la part d'Excel Professional ou d'autres fans d'Excel.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

Comment puis-je faire en sorte que le courrier ajoute automatiquement ma signature à partir d'Outlook?
Ce commentaire a été minimisé par le modérateur sur le site
Salut John,
Le code VBA ci-dessous peut vous aider à résoudre le problème. Merci pour votre commentaire.

Private Sub CommandButton1_Click ()
'Mis à jour par Extendoffice 2019/6/26
Dim xOutApp en tant qu'objet
Estomper xOutMail en tant qu'objet
On Error Resume Next
Set xOutApp = CreateObject("Outlook.Application")
Définir xOutMail = xOutApp.CreateItem(0)
Avec xOutMail
.Afficher 'ou utiliser .Envoyer
.To = "Adresse e-mail"
.CC = ""
.BCC = ""
.Subject = "Tester l'envoi de l'e-mail en cliquant sur le bouton"
.HTMLBody = "Ceci est un test d'envoi d'email dans Excel" & "
" & .HTMLBody
'.Envoyer
Terminer par
En cas d'erreur GoTo 0
Définir xOutMail = Rien
Définir xOutApp = Rien
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Devez-vous être un utilisateur Excel lorsque vous appuyez sur le bouton pour envoyer un e-mail ? ou simplement la personne qui reçoit l'e-mail doit-elle être un utilisateur Outlook ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonne journée,
Comme l'e-mail doit être envoyé via Outlook après avoir cliqué sur le bouton dans Excel, Outlook doit être installé sur votre ordinateur pour le faire fonctionner.
Ce commentaire a été minimisé par le modérateur sur le site
Je souhaite envoyer la feuille de calcul Excel dans l'e-mail, mais elle ne l'envoie pas. Comment écrivez-vous du code pour envoyer un document par e-mail
Ce commentaire a été minimisé par le modérateur sur le site
Salut marcus,
Le code VBA ci-dessous peut vous aider à résoudre le problème.

Sous SendWorkSheet()
'Mise à jour 20190626
Estomper xFile en tant que chaîne
Dim xFormat As Long
Dim Wb comme classeur
Dim Wb2 en tant que classeur
Dim FilePath As String
Dim FileName As String
Dim OutlookApp en tant qu'objet
Dim OutlookMail en tant qu'objet
On Error Resume Next
Application.ScreenUpdating = Faux
Définir Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Définir Wb2 = Application.ActiveWorkbook
Sélectionnez Case Wb.FileFormat
Cas xlOpenXMLWorkbook :
xFichier = ".xlsx"
xFormat = xlOpenXMLWorkbook
Cas xlOpenXMLWorkbookMacroEnabled :
Si Wb2.HasVBProject Alors
xFichier = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
autre
xFichier = ".xlsx"
xFormat = xlOpenXMLWorkbook
Si fin
Cas Excel8 :
xFichier = ".xls"
xFormat = Excel8
Cas xlExcel12 :
xFichier = ".xlsb"
xFormat = xlExcel12
End Select
CheminFichier = Environ$("temp") & "\"
FileName = Wb.Name & Format (Maintenant, "jj-mmm-aa h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Définir OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Avec OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "fonctionnalités kte"
.Body = "Veuillez vérifier et lire ce document."
.Attachments.Add Wb2.FullName
.Afficher
'.Envoyer
Terminer par
Wb2.Fermer
Tuer FilePath & FileName & xFile
Définir OutlookMail = Rien
Définir OutlookApp = Rien
Application.ScreenUpdating = True
End Sub
Ce commentaire a été minimisé par le modérateur sur le site
Comment puis-je joindre la feuille de calcul active à l'e-mail lorsque j'appuie sur le bouton ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut Grant,
Veuillez cliquer avec le bouton droit sur le bouton et sélectionner Afficher le code, puis copiez le code ci-dessous entre les lignes Private Sub et End Sub. J'espère que je peux aider. Merci pour votre commentaire.

Estomper xFile en tant que chaîne
Dim xFormat As Long
Dim Wb comme classeur
Dim Wb2 en tant que classeur
Dim FilePath As String
Dim FileName As String
Dim OutlookApp en tant qu'objet
Dim OutlookMail en tant qu'objet
On Error Resume Next
Application.ScreenUpdating = Faux
Définir Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Définir Wb2 = Application.ActiveWorkbook
Sélectionnez Case Wb.FileFormat
Cas xlOpenXMLWorkbook :
xFichier = ".xlsx"
xFormat = xlOpenXMLWorkbook
Cas xlOpenXMLWorkbookMacroEnabled :
Si Wb2.HasVBProject Alors
xFichier = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
autre
xFichier = ".xlsx"
xFormat = xlOpenXMLWorkbook
Si fin
Cas Excel8 :
xFichier = ".xls"
xFormat = Excel8
Cas xlExcel12 :
xFichier = ".xlsb"
xFormat = xlExcel12
End Select
CheminFichier = Environ$("temp") & "\"
FileName = Wb.Name & Format (Maintenant, "jj-mmm-aa h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Définir OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Avec OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "fonctionnalités kte"
.Body = "Veuillez vérifier et lire ce document."
.Attachments.Add Wb2.FullName
.Afficher
'.Envoyer
Terminer par
Wb2.Fermer
Tuer FilePath & FileName & xFile
Définir OutlookMail = Rien
Définir OutlookApp = Rien
Application.ScreenUpdating = True
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

Existe-t-il un moyen de changer le nom du fichier à la date actuelle lorsqu'il est joint à l'e-mail ?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

J'ai travaillé sur une feuille, mais je n'arrive pas à la terminer. J'espère que vous pourrez m'aider :)

Le fichier lui-même doit être un xltm (modèle) et il doit joindre la feuille elle-même au courrier.

Et une signature automatique, alors je serais très heureux.

Merci d'avance /Dr. Nan
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'exécute une feuille de calcul avec 80 comptes de bar individuels et j'ai utilisé le code VBA sur cette page avec beaucoup de succès. Cependant, dans le corps de l'e-mail, je souhaite copier et coller la plage spécifique de cellules d'un compte lors de l'envoi afin que le client puisse avoir un historique. Pouvez-vous aider avec le code VBA pour cela?
Ce commentaire a été minimisé par le modérateur sur le site
Salut! Merci beaucoup pour ça. C'est une aide fantastique.

Est-il possible d'envoyer une feuille de travail active en appuyant sur un bouton au lieu du classeur complet ?

Merci !
Il n'y a pas encore de commentaires postés ici
TÉLÉCHARGER PLUS
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés