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

Comment envoyer / envoyer par e-mail une plage de cellules via Outlook à partir d'Excel?

Avez-vous déjà souffert d'un problème qui, après avoir terminé un rapport dans une feuille de calcul, et que vous devez envoyer à une plage de cellules de cette feuille de calcul contenant des données importantes pour votre destinataire spécifique. Existe-t-il des moyens rapides pour envoyer par e-mail cette plage à partir d'Excel sans ouvrir Outlook?

Envoyer une plage de cellules en pièce jointe à partir d'Excel avec le code VBA

Envoyer la plage de cellules en tant que corps d'Excel avec le code VBA


flèche bleue bulle droiteEnvoyer une plage de cellules en pièce jointe à partir d'Excel avec le code VBA

Le code VBA suivant peut vous aider à envoyer votre plage sélectionnée en tant que pièce jointe dans Excel. Veuillez faire comme ceci:

1. Ouvrez votre classeur, puis maintenez la touche ALT + F11 clés pour ouvrir le Fenêtre Microsoft Visual Basic pour Applications.

2Cliquez sur insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: envoyer une plage de cellules en pièce jointe depuis Excel

Sub SendRange()
'Update 20131209
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "skyyang@extendoffice.com"
    .CC = ""
    .BCC = ""
    .Subject = "information of kte"
    .Body = "hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Notes: Dans le code ci-dessus, vous pouvez modifier les informations suivantes selon vos propres besoins.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "information de kte"
  • .Body = "bonjour, veuillez vérifier et lire ce document."

3. Puis clique F5 pour exécuter ce code, et une boîte de dialogue apparaîtra pour vous rappeler de sélectionner une plage que vous souhaitez envoyer. Voir la capture d'écran:

doc-send-range1

4. Puis clique OK, et une boîte de dialogue apparaîtra, une fois la barre de progression terminée, cliquez sur Autoriser, puis la plage spécifique de cellules a été envoyée à votre destinataire en tant que pièce jointe.

doc-send-range2


flèche bleue bulle droiteEnvoyer la plage de cellules en tant que corps d'Excel avec le code VBA

Si vous souhaitez envoyer une plage spécifique dans le cadre du corps du message à partir d'Excel, vous pouvez également appliquer le code VBA suivant pour le résoudre.

Kutools pour Excel, avec plus de 120 fonctions pratiques, facilite votre travail. 

1. Activez votre feuille de calcul et maintenez la touche ALT + F11 clés pour ouvrir le Fenêtre Microsoft Visual Basic pour Applications.

2Cliquez sur insérer > Moduleet collez le code suivant dans le Fenêtre du module.

Code VBA: envoyer une plage de cellules en tant que corps depuis Excel

Sub EmailRange()
'Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
    .Introduction = "Please read this email."
    .Item.To = "skyyang@extendoffice.com"
    .Item.Subject = "information of kte"
    .Item.Send
End With
Application.ScreenUpdating = True
End Sub

Remarque : Dans le code ci-dessus, vous pouvez modifier les informations suivantes selon vos besoins.

  • .Introduction = "Veuillez lire cet e-mail."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "information de kte"

3. Puis clique F5 pour exécuter ce code, et une boîte de dialogue apparaîtra pour vous rappeler de sélectionner une plage que vous souhaitez envoyer.

doc-send-range1

4. Puis clique OK, et une boîte de dialogue apparaîtra, une fois la barre de progression terminée, cliquez sur Autoriser, puis la plage spécifique de cellules a été envoyée à votre destinataire en tant que corps du message.

doc-send-range2

Notes:

1. Ces codes ne sont disponibles que lorsque Outlook est votre programme de messagerie.

2. Après avoir envoyé la feuille de calcul actuelle, vous pouvez accéder à votre Outlook pour vous assurer que l'e-mail a bien été envoyé.


Articles Liés:

Comment envoyer une feuille de calcul uniquement via Outlook à partir d'Excel?

Comment envoyer le classeur actuel via Outlook à partir d'Excel?


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 (26)
Pas encore de notes. Soyez le premier à évaluer!
Ce commentaire a été minimisé par le modérateur sur le site
Salut, j'utilise le marco qui sélectionne les cellules requises pour envoyer un e-mail. j'ai combiné cela avec une autre macro pour que je l'obtienne pour ouvrir un "nouveau courrier électronique" mon problème est maintenant que si vous mettez beaucoup d'informations dans une cellule, il ne faut que l'iformaiton que vous visualisez pas toutes les informations dans cette cellule des idées ?? merci beaucoup pour votre aide avec ces acclamations
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous
J'ai un projet pour sélectionner la plage dans la feuille 1 à envoyer par e-mail une par une à plusieurs adresses e-mail écrites dans la feuille 2 dans la colonne A et si la colonne B est vide avec un certain sujet et après l'envoi, il écrit dans la feuille 2 colonne b envoyé
Et d'attendre 10 secondes pour envoyer le prochain e-mail selon l'état du serveur
Quelqu'un m'aide s'il vous plait ?   
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Pouvez-vous s'il vous plaît laissez-moi savoir comment ajouter la signature et la deuxième ligne d'introduction à ce courrier pour le deuxième programme. Merci d'avance.
Ce commentaire a été minimisé par le modérateur sur le site
agréable et utile, bon travail !!!
Ce commentaire a été minimisé par le modérateur sur le site
Très utile. Merci . J'ai une liste d'adresses e-mail sur la même feuille. Lorsque j'ai cliqué sur une adresse e-mail, la plage de cellules sélectionnée sera envoyée en pièce jointe à cet e-mail. Pouvez-vous s'il vous plaît m'aider à ce sujet? Merci beaucoup.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, très bien expliqué. Au lieu d'envoyer un nouveau classeur, nous pouvons uniquement copier et coller la plage sélectionnée dans le corps de l'e-mail et l'envoyer. Je ne veux pas envoyer la plage sélectionnée en tant qu'image. Je veux envoyer comme une vue de tableau dans le corps de l'e-mail. Pouvons-nous faire cela??
Ce commentaire a été minimisé par le modérateur sur le site
Merci, c'est très utile mais que se passe-t-il si j'ai besoin d'ajouter une description dans le corps du message avant de l'envoyer. S'il vous plaît suggérer le code.
Ce commentaire a été minimisé par le modérateur sur le site
Hi,
Tout a l'air bien mais ne donne pas la plage sélectionnée de bordure, pourriez-vous suggérer s'il vous plaît.
Ce commentaire a été minimisé par le modérateur sur le site
Merci beaucoup, je trouve cette solution depuis si longtemps.
Ce commentaire a été minimisé par le modérateur sur le site
Excellent travail. Il serait préférable que cela soit envoyé automatiquement. Que dois-je faire pour qu'il ne génère pas d'erreur avant de reprendre l'envoi ?
Ce commentaire a été minimisé par le modérateur sur le site
pourrions-nous mettre autant d'adresses e-mail à envoyer ?
Ce commentaire a été minimisé par le modérateur sur le site
Salut, Carey, tout ce qui précède, les VBA peuvent ajouter de nombreuses adresses e-mail (To, BCC, CC) à envoyer en utilisant ; comme séparateur. Par exemple, .To = "skyyang@extendoffice.com ; test1@extendoffice.com ; test2@extendoffice.com "
Ce commentaire a été minimisé par le modérateur sur le site
ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, sondern per copier-coller in die E-Mail einfügen. Wie geht das in dem VBA-Code?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour, j'ai configuré un tableau que je souhaite que le personnel remplisse, puis un bouton de commande qui générera ensuite automatiquement un e-mail, mais je souhaite que les données du tableau soient dans le corps de l'e-mail. Y a-t-il un code pour ça ? 
Merci 
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous
J'ai un projet pour sélectionner la plage dans la feuille 1 à envoyer par e-mail une par une à plusieurs adresses e-mail écrites dans la feuille 2 dans la colonne A et si la colonne B est vide avec un certain sujet et après l'envoi, il écrit dans la feuille 2 colonne b envoyé
Et d'attendre 10 secondes pour envoyer le prochain e-mail selon l'état du serveur
Quelqu'un m'aide s'il vous plait ?   
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour à tous
J'ai un projet pour sélectionner la plage dans la feuille 1 à envoyer par e-mail une par une à plusieurs adresses e-mail écrites dans la feuille 2 dans la colonne A et si la colonne B est vide avec un certain sujet et après l'envoi, il écrit dans la feuille 2 colonne b envoyé
Et d'attendre 10 secondes pour envoyer le prochain e-mail selon l'état du serveur
Quelqu'un m'aide s'il vous plait ?   
Ce commentaire a été minimisé par le modérateur sur le site
Salut, hriad, " si la colonne B est vide avec un certain sujet et après l'envoi il écrit dans la feuille 2 colonne b envoyé
Et attendre 10 secondes pour envoyer le prochain e-mail car l'état du serveur "Je ne comprends pas cela. Veuillez me redire votre besoin.
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Sunny
tout d'abord , merci pour votre aide , comme le serveur a mis comme condition de ne pas envoyer beaucoup d'emails dans la même seconde , je souhaite attendre 10 secondes après avoir envoyé le premier email et le suivant.
Ce commentaire a été minimisé par le modérateur sur le site
Salut, hriad, veuillez essayer le code ci-dessous, après l'avoir exécuté, une boîte de dialogue apparaîtra pour sélectionner une plage que vous souhaitez envoyer, puis elle sera envoyée aux adresses de la feuille 2 colonne A et avec les sujets de la colonne B. Toutes les 10 secondes , envoyer à une seule adresse. Vous pouvez modifier le code "Veuillez lire cet e-mail" selon vos besoins.
Sous SendEmailRange()

'Mettre à jour parExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV As Booléen

Dim xWSh en tant que feuille de travail

Dim xCount As Integer

Dim xI sous forme d'entier

On Error Resume Next

xTitleId = "KutoolsforExcel"

'sélectionne une plage utilisée pour envoyer comme corps

Set WorkRng = Application.InputBox("Plage", xTitleId, Application.Selection.Address, , , , , 8)

Si WorkRng n'est rien, quittez Sub
WorkRng. Activer
WorkRng.Select

Set xWSh = ActiveWorkbook.Worksheets("Sheet2") 'la feuille qui contient les adresses et les sujets

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = Faux


Pour xI = 1 Vers xCompte

Si (xWSh.Range("A" & xI) = "") Alors
Sortie pour
Si fin
ActiveWorkbook.EnvelopeVisible = Vrai
Avec ActiveSheet.MailEnvelope
.Introduction = "Veuillez lire cet e-mail."

.Item.To = xWSh.Range("A" & xI)

.Item.Subject = xWSh.Range("B" & xI)

.Item.Send
Terminer par
Si (xI = xCompte) Alors

Sortie pour

Si fin

Application.Wait Now + TimeValue("0:00:10")

Suivant


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Sunny
Merci beaucoup pour vos efforts.... Merci beaucoup
Ce commentaire a été minimisé par le modérateur sur le site
Peut-on fixer des plages ? en macro lui-même
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour,

Mam plik z 6 arkuszami. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Czy da się to podpiąć pod 5 przycisków?
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Pawl
Pour résoudre votre problème, l'article ci-dessous peut vous aider, veuillez le consulter :

https://www.extendoffice.com/documents/excel/7178-send-each-sheet-to-different-email.html

Merci !
Ce commentaire a été minimisé par le modérateur sur le site
Merci pour ça! Je vais le tester dès mon retour de vacances. J'ai une autre question. Vous avez un problème avec l'exécution de codes vba en utilisant le bouton Activex (aucune action du tout) même si le code fonctionne parfaitement en mode édition ou lorsqu'il est exécuté par ctrl + bouton sélectionné à partir du clavier. Je commence juste le voyage vba et je n'ai pas
idée de ce que je fais mal :/
Ce commentaire a été minimisé par le modérateur sur le site
Bonjour Pawl
Il vous suffit de copier et coller le code dans le Microsoft Visual Basic pour applications fenêtre, puis cliquez sur le course bouton de la barre d'outils comme illustré ci-dessous: (Notes: dans le code, S1 est la cellule contient l'adresse e-mail à laquelle vous souhaitez envoyer l'e-mail. Veuillez les modifier selon vos besoins.)

https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-send-emails.png

Veuillez réessayer!
Ce commentaire a été minimisé par le modérateur sur le site
Hi,

J'ai tout fait comme ci-dessus et le résultat est : tout fonctionne parfaitement à part le bouton :) Je ne m'en soucie pas vraiment pour le moment :)

Immense merci !!! sujet clos :)
Il n'y a pas encore de commentaires postés ici
Laisser vos commentaires
Publier en tant qu'invité
×
Évaluez cet article:
0   Personnages
Emplacements suggérés