Envoyer un classeur Excel par e-mail - Conseils Excel

Table des matières

Merci à Katherine qui a envoyé la question pour le conseil Excel de cette semaine:

Je souhaite placer un bouton de formulaire sur une feuille de calcul Excel qui, une fois cliqué, enverra par courrier électronique la même feuille de calcul Excel à quelqu'un.

Pour envoyer le livre entier à [email protected] avec une ligne d'objet particulière, vous utiliseriez cette macro Excel.

Sub SendIt() Application.Dialogs(xlDialogSendMail).Show arg1:="[email protected]", _ arg2:="This goes in the subject line" End Sub

Il existe une icône de barre d'outils qui vous permet d'ajouter un bouton de commande. Suivez ces étapes pour l'ajouter à une barre d'outils existante:

  • Affichage> Barres d'outils> Personnaliser
  • Cliquez sur l'onglet des commandes
  • Dans la zone Catégorie, faites défiler jusqu'à Control Toolbox
  • Dans la zone des commandes, faites défiler vers le bas jusqu'au bouton de commande
  • Cliquez sur le bouton de commande et faites-le glisser vers le haut et déposez-le sur une barre d'outils existante
  • Fermez la boîte de dialogue Personnaliser en cliquant sur Fermer

Maintenant que vous avez l'icône du bouton de commande: cliquez sur l'icône. Faites glisser votre feuille de calcul pour créer le bouton. Faites-le aussi grand ou aussi petit que vous le souhaitez. Excel vous demandera d'attribuer une macro au bouton. Choisissez SendIt. Cliquez et faites glisser pour mettre en évidence le mot Bouton 1 sur le bouton. Tapez quelque chose comme "Envoyer ce fichier par e-mail". Cliquez en dehors du bouton et vous êtes prêt à partir. Si jamais vous avez besoin de réaffecter la macro associée à ce bouton, cliquez avec le bouton droit sur le bouton et choisissez attribuer une macro.

Que faire si vous avez une grande liste d'informations que vous souhaitez distribuer à un certain nombre d'utilisateurs, mais que vous souhaitez que chaque utilisateur voie uniquement ses propres informations? Voici une macro légèrement plus complexe qui fera cela. À droite, un exemple de liste de ventes pour trois régions.

Avant d'écrire la macro, configurez le classeur comme suit:

  • Copiez la feuille de données en cliquant avec le bouton droit de la souris sur l'onglet des données, choisissez "déplacer ou copier", cochez "créer une copie", OK. Renommez cette nouvelle feuille de calcul "Rapport". Vous pouvez renommer une feuille en cliquant avec le bouton droit de la souris sur l'onglet, en sélectionnant «renommer», puis en tapant Rapport.
  • Dans l'onglet rapport, supprimez toutes les lignes de données. Ne gardez que les titres et les titres.
  • Insérez une nouvelle feuille de calcul avec ces colonnes: Région, Destinataire. Dans cette feuille de calcul, tapez chaque nom de région et l'utilisateur qui doit recevoir le rapport. Renommez cette feuille de calcul "Distribution".

Voici la macro. Les lignes qui commencent par des apostrophes (') sont des commentaires conçus pour vous aider à suivre le flux.

Public Sub SendItAll() ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Sort data by region Sheets("Data").Select Range("A1").CurrentRegion.Select Selection.Sort Key1:=Range("A2"), Header:=xlYes ' Process each record on Distribution Sheets("Distribution").Select FinalRow = Range("A15000").End(xlUp).Row For i = 2 To FinalRow Sheets("Distribution").Select RegionToGet = Range("A" & i).Value Recipient = Range("B" & i).Value ' Clear out any old data on Report Sheets("Report").Select Range("A1").CurrentRegion.ClearContents ' Get records from Data Sheets("Data").Select Range("A1").CurrentRegion.Select ' Turn on AutoFilter, if it is not on If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter ' Filter the data to just this region Selection.AutoFilter Field:=1, Criteria1:=RegionToGet ' Select only the visible cells and copy to Report Selection.SpecialCells(xlCellTypeVisible).Select Selection.Copy Destination:=Sheets("Report").Range("A1") ' Turn off the Autofilter Selection.AutoFilter ' Copy the Report sheet to a new book and e-mail Sheets("Report").Copy Application.Dialogs(xlDialogSendMail).Show _ arg1:=Recipient, _ arg2:="Report for " & RegionToGet ActiveWorkbook.Close SaveChanges:=False Next i End Sub

Articles intéressants...