Excel formation - Page de vente TCd - 11 Découvrez la méthode complète pour analyser les données efficacement et sans effort avec les tableaux croisés dynamiques, en cliquant ici

Comment envoyer la sélection par mail en 1 clic avec VBA sur Excel

Il y a quelques semaines de cela, je vous avais proposé un petit tuto pour vous présenter six astuces pour envoyer un mail simplement avec Excel. Aujourd’hui, je vous propose un petit tutoriel simple pour aller encore plus loin et envoyer le contenu des cellules sélectionnées dans un mail, en appuyant sur un unique bouton ! Ce tutoriel est une réponse à la question posée par « M C » dans les commentaires de la vidéo Youtube « Les 3 Objets Range INDISPENSABLES de VBA »

Excel formation - Envoyer mail avec VBA - 01

 

Téléchargement

 

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Présentation

Pour illustrer ce tutoriel, nous allons partir du fichier que nous avons eu l’occasion de mettre en place dans le cours dédié à l’apprentissage de la fonction TRI() d’Excel :

Excel formation - Envoyer mail avec VBA - 02

Comme vous pouvez l’imaginer, l’objectif est alors de pouvoir envoyer simplement le contenu de ce tableau par mail en appuyant sur un unique bouton !

Pour cela, nous allons évidemment devoir nous reposer sur l’utilisation d’une macro-commande développée en VBA.

Ne prenez pas peur, aucune compétence dans le développement en VBA n’est requise pour suivre ce tutoriel, nous allons bien entendu nous attarder sur chaque point étudié de manière détaillé.

Mais si vous souhaitez en savoir davantage au sujet de ce langage de programmation, je vous invite à suivre la formation « Apprendre le VBA » disponible gratuitement sur le blog.

Tout d’abord, sachez que pour pouvoir saisir du code en VBA, il est nécessaire que le classeur soit enregistré sous le format *.xlsm qui permet de sauvegarder les macro-commandes en VBA.

Pour cela, rendez-vous dans le menu Fichier du ruban, puis sélectionnez Enregistrer Sous > Parcourir :

Excel formation - Envoyer mail avec VBA - 03

Après avoir recherché le dossier dans lequel enregistrer le fichier Excel, dans le menu déroulant Type, choisissez d’enregistrer le fichier en tant que « Classeur Excel (prenant en charge les macros) (*.xlsm) » :

Excel formation - Envoyer mail avec VBA - 04

Cela étant fait, pour lancer l’éditeur de code en VBA, il suffit de lancer Visual Basic Editor en suivant l’une des méthodes détaillées dans le chapitre « Activer VBA en affichant le menu DÉVELOPPEUR sur EXCEL ».

Ici, nous allons simplement utiliser le raccourci clavier [Alt] + [F11].

 

 

2. Envoyer le contenu d’une cellule par mail

Maintenant que le fichier est prêt à recevoir nos lignes de code en VBA, nous allons pouvoir entrer dans le vif du sujet.

Et pour commencer simplement, nous allons tout d’abord nous contenter d’envoyer le contenu de la cellule sélectionnée en tant que contenu de l’email.

Nous verrons dans une seconde partie comment procéder pour envoyer tout le contenu de la sélection dans l’email.

Pour pouvoir lancer rapidement la macro commande depuis la feuille de calcul, nous allons simplement insérer un bouton qui sera rattaché à notre macro.

Pour cela, revenons sur la feuille de calcul sur laquelle nous souhaitons l’insérer.

Ensuite, nous allons créer un objet Zone de texte (menu Insertion > Zone de texte) :

Excel formation - Envoyer mail avec VBA - 05

Puis nous dessinons cet objet sur la feuille de calcul :

Excel formation - Envoyer mail avec VBA - 06

Ensuite, nous saisissons un texte au bouton, par exemple « Envoyer par mail », et nous le mettons en forme (en utilisant simplement un style prédéfini : Menu Mise en forme, puis nous sélectionnons un style depuis le menu déroulant) :

Excel formation - Envoyer mail avec VBA - 07

Une fois ces opérations terminées, nous pouvons simplement effectuer un clic-droit sur le bouton, pour choisir l’option Affecter une macro.

Excel formation - Envoyer mail avec VBA - 08

Nous saisissons un nom que nous souhaitons donner à la macro-commande (par exemple « envoyerParMail », évidemment sans utiliser d’espace, ni d’accent), puis nous cliquons sur le bouton Nouvelle pour qu’Excel créé automatiquement une nouvelle procédure au sein du projet, laquelle sera appelée dès que nous cliquerons sur le bouton :

Excel formation - Envoyer mail avec VBA - 09

Excel a alors inséré la nouvelle macro dans un module :

Excel formation - Envoyer mail avec VBA - 10

Il suffit alors de saisir nos lignes de code entre les lignes ajoutées.

Mais avant cela, nous allons devoir activer la référence à la librairie Microsoft Outlook au sein du projet, afin de pouvoir agir directement sur l’application de gestion des mails.

Pour cela, c’est très simple, rendez-vous dans le menu Outils > Références, puis dans la liste des librairies disponibles (celles-ci étant classées par ordre alphabétiques), repérez la référence « Microsoft Outlook 16.0 Object Library » (le numéro de version va dépendre de votre version d’Office).

Une fois celle-ci activée, valider simplement en appuyant sur la touche [Entrée] du clavier :

Excel formation - Envoyer mail avec VBA - 11

De cette manière, nous allons maintenant pouvoir utiliser simplement des variables, objets ou encore procédure permettant de manipuler Outlook directement depuis Excel.

C’est parti pour le code VBA !

La première chose à faire, maintenant que la librairie permettant de manipuler Outlook est accessible dans le projet va être de créer un nouvel objet de gestion de l’application Outlook que nous allons appeler oOutlook

 

Sub envoyerParMail()
    Dim oOutlook As Object
    Set oOutlook = CreateObject("Outlook.Application") 

Ensuite, nous allons insérer un nouveau mail dans cette application en utilisant un objet dédié que nous allons appeler oMail.

La création de ce mail est possible en utilisant la méthode CreateItem(0) de l’objet oOutlook. :

    Dim oMail As Object
    Set oMail = oOutlook.CreateItem(0)

Et voilà le mail est créé, il ne reste plus qu’à le paramétrer !

Pour cela, nous allons utiliser l’instruction With de VBA qui va nous éviter d’avoir à ressaisir à chaque fois l’appel du mail :

    With oMail
    
    End With

La première chose à faire va alors être de renseigner le nom du destinataire du mail :

 

    With oMail
        .To = "contact@monmail.fr"

Ensuite, le sujet du mail et son contenu :

 

        .Subject = "Extrait du classeur "  & ThisWorkbook.Name
        .Body = ActiveCell

Comme vous pouvez le constater, nous insérons ici le nom du classeur dans le sujet du mail, et le contenu de la cellule active directement dans le corps de mail.

Pour récupérer le contenu de la cellule, nous nous contentons d’appeler celle-ci (ActiveCell), mais nous pourrions également appeler la propriété de cette cellule ActiveCell.Value :

 

        .Body = ActiveCell.Value

En réalité, la propriété Value étant la propriété par défaut de tous les objets Range, c’est elle qui sera appelée automatiquement en cas d’omission.

Maintenant, nous avons deux possibilités :

  • Soit nous souhaitons afficher le mail ainsi créé dans l’interface d’Outlook, ce qui va nous permettre de contrôler l’ensemble des champs avant de l’envoyer manuellement, et dans ce cas, nous allons utiliser la méthode .Display de oMail,
  • Soit nous souhaitons envoyer directement le mail de manière transparente et dans ce cas, nous utiliserons plutôt la méthode .Send (attention dans ce cas, le mail va partir immédiatement sans possibilité de le contrôler !)

Dans notre exemple, nous allons préférer afficher le message avant son envoi :

 

      .Display

Ensuite, pour tester la macro, il ne reste plus qu’à revenir sur la feuille de calcul pour cliquer sur le bouton que nous avons créé juste avant :

Excel formation - Envoyer mail avec VBA - 12

 

3. Envoyer le contenu de la sélection par mail

Maintenant, imaginons que nous souhaitions, non plus envoyer seulement la cellule active, mais l’ensemble des cellules sélectionnées

Les choses vont commencer à devenir un peu plus complexe, mais pas de panique, il va simplement suffire de vous laisser guider.

Pour commencer, nous allons créer un objet oMail.GetInspector.WordEditor que nous allons appeler oObjectWord et qui sera un sous-objet de notre mail (de cette manière l’objet va être directement inséré dans le corps du mail)

Cet objet va nous permettre d’insérer un nouvel objet dans le corps du mail qui va agir comme une page Word.

 

        Dim oObjetWord As Object
        Set oObjetWord = .GetInspector.WordEditor

Ensuite, nous allons simplement pouvoir copier le contenu des cellules sélectionnées directement à l’intérieur de cet objet (à la place de la propriété .Body, devenue sans objet étant donné que oObjectWord est déjà inséré dans le corps du mail) :

 

        Selection.Copy
        oObjetWord.Range(0).Paste

Note : Le .Range(0) permet d’inclure le collage en tout début de mail

Et voilà !

Vous pouvez maintenant tester la procédure et constater que la sélection est insérée dans le mail :

Excel formation - Envoyer mail avec VBA - 13

 

 



Articles qui pourraient vous intéresser

Comment simplifier les formules avec l’automatisation des plages nommées d’Excel
Comment ajouter automatiquement une ligne lors d’un changement de valeur dans une colonne Excel
Comment tirer une lettre aléatoire pour créer un mot de passe incrackable – La fonction CAR() d’Excel
Comment créer une zone d’impression dynamique et intelligente sur Excel
Comment supprimer les lignes vides ou avec des cellules vides d’un tableau sur Excel
Comment géolocaliser une adresse sur Google Maps en 1 clic avec Excel
Comment calculer le taux de rendement interne d’un projet sur Excel (fonction TRI)
Comment envoyer la sélection par mail en 1 clic avec VBA sur Excel
Comment afficher plusieurs onglets d'un même classeur grâce au multi-fenêtrage d'Excel
Comment convertir des CSV en fichier Excel en masse (tous les fichiers d’un répertoire) avec VBA
6 Astuces pour envoyer facilement un fichier Excel par mail (sans VBA)
3 méthodes pour transformer un texte en majuscule (ou en minuscule) sur Excel

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.