Il nous arrive que nous voulions envoyer un mail depuis une de nos bases de données sur Excel. Comme par exemple créer une mailing liste, envoyez des rappels de payement ou transmettre un dossier à une autre division de l’entreprise si une certaine tache est terminée.
C’est pourquoi nous allons voir dans ce court comment envoyer 1 mail depuis une adresse qui se situe dans une cellule, ajouter un sujet et un message.
Par la suite nous allons voir comment envoyer un mail à multiple personne et pour finir nous allons voire commet envoyer un mail aux personnes correspondant un certain critère.
Vous pouvez récupérer le fichier de l’exercices ici FIchier : envoyer un mail Outlook
La base de données
Alors nous avons une petite base de données qui comporte un nom, une adresse mail et un pays.
Et nous allons utiliser au cours de ce cours ces informations afin d’envoyer un mail Outlook au destinataire.
Activer la librairie Outlook
Avant de commencer nous allons devoir activer la librairie Outlook afin de permettre de l’intégrer dans notre code et d’utiliser les propriétés d’Outlook.
Pour cela il faut aller dans visual Basic (ALT + F11) puis dans outils il faut aller sur Références…
Ici il faudra trouver Microsoft Outlook xx.0 Object Library, les xx sont la version il se peut que votre version soit différente que la mienne donc vous devez prendre votre version.
Cocher la case et cliquer sur OK
Envoyer un mail Outlook à une personne
Nous allons commence par envoyer un simple mail à 1 seule personne pour cela nous allons place le code suivant
Ici nous avons créer une variable que nous avons nommé LeMail qui contient un objet Outlook, puis nous avons di au code créer un mail avec la commande CreateItem(OlMailItem).
Puis dans notre mail nous avons indiquer les informations telle que le subject, ou trouver l’adresse de réception qui se trouve dans la cellule C6. Nous avons aussi indiquer quelle information placer dans le contenue du mail. Pour finir nous avons demander au code de ne pas envoyer le mail mais de l’afficher avec Display.
Si nous changeons Display en Send alors le mail serra envoyer sans que nous voyions d’abord.
Envoyer un Mail Outlook personnaliser.
Désormais nous allons voir comment personnaliser un peut notre mail en placent des informations supplémentaires de notre base de données comme le nom et le pays. Avec le code suivant
Se qui donne le résultat suivant
Une autre solution consiste à créer un champs Sujet et Message dans une cellule
et de faire référence à ces cellules comme suite
Qui donne le résultat suivant
Envoyer un mail Outlook à plusieurs personne
Désormais nous allons voir comment envoyer un mail toutes les personnes dans la liste et d’ajouter dans le sujet leurs nom à la fin.
Pour cela nous allons devoir travailler avec une loop For qui va exécuter le code un nombre de fois nécessaire. Pour garder cette exercice simple nous allons dire que notre base de donnée ne serra pas prolonge et s’arrête à la ligne 9.
Et donc nous allons placer le code suivant
Qui donne le résultat suivant si on lance le code
4 mails sont créés est prêt à être envoyer et nous pouvons voir dans chaque sujet il y a leurs noms d’indiquer.
Envoyer un mail Outlook avec une condition
Désormais nous allons envoyer uniquement un mail aux personnes qui corresponde à une condition et notre exemple la condition est le pays Belgique. C’est-à-dire que nous voulons uniquement envoyer aux personnes qui vivent en Belgique.
Cela nous allons le faire avec le code suivant.
Quand on lance le code nous avons le résultat suivant.
Uniquement 2 mails seront envoyés.
Désormais vous savez comment envoyer un mail Outlook avec Excel VBA. Bien sûr il y a plusieurs possibilités comme ajouter une pièce jointe, ajouter une date de rappelle et la prolonger après avoir envoyer un mail à une personne qui n’as pas encore payer ça facture. Faite moi savoir dans les commentaires dans quelle situation vous aimerez voir un exemple d’utilisation de mail. D’ici la je vous retrouve dans un prochain cours salut tous le monde
Hello
J’adore des tuto simple clair et efficace.
Merci bien.
Hello
J’adore des tuto simple clair et efficace.
Merci bien.
Bonjour ! J’espère que vous allez bien.j’appreci vraiment votre travail, ça fait longtemps que même je vous suis
Enfaite j’ai un souci avec le code VBA, je ne sais pas si vous pouvez m’aider
Tres bon tuto
Comment mertte en pièce jointe un fichier precis enregistré dans un repertoire?
Bonjour, merci pour ce code très utile pour ma fonction d’acheteur 3 questions :
*je souhaite mettre plusieurs personne en copie ou indiquer le CC ? ex mettre en copie c6;c7;c8
*dans le corp de mail je souhaite le personnaliser mettre :
Bonjour « &B6& » ,
Merci de me faire votre meilleure proposition selon le schéma en pj et les besoins ci-dessous :
*je souhaite joindre 1 ou plusieurs pièces jointes comment faire ?
merci d’avance pour votre aide.
Avez vous une chaine youtube, tiktok pour des astuces ?
et comment faire en sorte que la signature enregistré dans outlook soit incrémentée dans l’envoi du mail ?
Bonsoir
Je souhaite envoyer un e mail via un état Excel mais ça va être une réponse sur un mail initial
Aulieu de revenir vers Outlook mr assurer une réponse, je souhaite le faire via mon état Excel qui englobe toute la situation
Merci
Bonjour,
Dans un cadre professionnel
1. Comment mettre en forme le corps du message:
– Surligner en gris,
– Mettre en gras,
– Texte en Bleu,
– Aller à la ligne
2. Comment garder sa signature Outlook (Respectivement pour chaque utilisateur qui se sert du fichier excel)
Merci d’avance
Bonjour Samuel,
il faut que le message soit en format HTML : à la place de ‘.Body=…’ mettre ‘.HTMLBody=…’ Ensuite, il suffit par exemple pour mettre en gras, d’encadrer le texte avec le symboles « » avant le texte et « » après le texte. Par exemple : « Voici mon texte en gras « . Idem pour les autres mises en forme : pour souligner, pour italique. Et bien sûr on peut cumuler : « Voici un texte en gras, souligné et en italique ! »
Le retour à la ligne c’est le symbole « ». Deux symboles à la suite = un double retour de ligne,etc…
Pour garder la signature, le mieux est de créer le mail à partir d’un modèle.
…oups, évidemment le site à utilisé les symboles ! Donc les signes à utiliser : gras : ‘‘ au début et ‘‘ à la fin; pour le souligné c’est u à la place du b et pour italique c’est i. Cumul : ‘‘ » ‘‘
Pour le saut de ligne : » avant ou/et après le texte 🙂
Bonjour,
J’aurai besoin de réaliser une macro afin de relancer des fournisseurs sur le portefeuille des commandes en cours. Ayant beaucoup de fournisseurs, il faudrait que mon fichier filtre sur chacun d’eux avec leurs commandes, ensuite enregistre le fichier dans un dossier et envoi un email au fournisseur en associant ce fichier avec l’adresse mail dédié, un corps de mail général, un titre pour l’objet (ex: « portefeuille de commande »). Et en plus de cela j’aimerai que les personnes gérant les fournisseurs en questions soit en copie.
J’espère avoir été clair.
Merci d’avance pour votre aide.
Bonjour,
J’aurai besoin de réaliser une macro afin de relancer des fournisseurs sur le portefeuille des commandes en cours. Ayant beaucoup de fournisseurs, il faudrait que mon fichier filtre sur chacun d’eux avec leurs commandes, ensuite enregistre le fichier dans un dossier et envoi un email au fournisseur en associant ce fichier avec l’adresse mail dédié, un corps de mail général, un titre pour l’objet (ex: « portefeuille de commande »). Et en plus de cela j’aimerai que les personnes gérant les fournisseurs en questions soit en copie.
J’espère avoir été clair.
Merci d’avance pour votre aide.
Bonjour à tous,
Comment fait-on pour joindre plusieurs adresse mail à cette ligne de code :
.SendMail « XXX@hotmail.fr », _
« Demande DE chantier »
J’ai essayé avec le symbole &, en mettant un point virgule mais rien ne fonctionne.
Merci pour votre éclairement.
Baptiste
Merci ça marche très ben.
Je voudrais savoir si c’est possible denvoyer par whatsapp aussi…
Et si oui merci de m’aider.
Et de montrer ou j’aurais juste à prendre whatsapp dans les références.?
Bonjour,
J’aimerais intégré a mon courriel un tableau qui sera trié en fonction de multiples destinataires et de multilignes.
J’aimerais que le tableau soit en fonction d’un fournisseur qui revient souvent. (ma base de données a souvent plus de 500 lignes et a chaques lignes, le destinataire est indiqué.Donc on voit maintes et maintes de fois les mêmes destinataires)
De sorte que le tableau envoyé a la suite du Body soit avec les entêtes et le nombre de lignes rattachés à chaques destinataires.
Présentement je peux envoyer les courriels pour chaques lignes individuelles(je ne veux pas spammer mes destinataires).Je veux grouper chaques lignes en fonction de chaques destinataires.
Bonjour Monsieur, avez vous trouvé le code à votre demande ? Si oui, je suis interresé de le voir. Merci d’avance
Bonjours j’aimerais envoyer un mail avec un compte rendu journalier avec plusieurs personne en copie.
Cordialement
Bonjour,
Tout d’abord merci beaucoup pour le post
Dans me cas ou mon tableau (contact) ne serait pas sur la même feuille que mon « message » comment puis-je faire la liaison entre les deux feuille ?
j’ai essayer avec if sheets « feuille1 & « d » & ligne) = « Belgique » Then
Mais sans succès
Merci à vous
Bonjour,
J’ai un petit souci pour l’envoie de mon email. Il ne part pas avec la bonne adresse d’expéditeur.
Ayant plusieurs compte sur mon Outlook, j’aimerais qu’il parte avec une adresse précise.
J’ai pourtant mis dans mon code « .SentOnBehalfOfName » :
With oMailItem
.SentOnBehalfOfName = « monadresse@mondomaine.fr »
.To = Destinataire
.Subject = Sujet
mais celà ne fonctionne pas.
Une petite idée ?
En attendant, bonne journée
Dominique
IL FAUT METTRE :
.SentOnBehalfOfName = « monadresse@mondomaine.fr »
Top merci!
Bonjour,
je suis entrain de développer un code VBA pour un fichier Excel qui contient des références avec des dates de réception et dates de livraison, du coup le macro va calculer le nombre des jours restant (date livraison-aujourd’hui) et doit m’avertir avec un mail le jour de livraison (nombre des jour restant=0) même le fichier est fermé , le mail doit contenir la référence dans l’objet.
le problème c’est chaque fois que j’ouvre le fichier pour saisir les nouveaux références il m’envoi des email même il n y a pas de dépassement des date (chaque mouvement d’une cellule à l’autre il lance un mail)
pouvez vous m’aider svp ?
merci de m’envoyer le code stp
bonjour, merci pour ce tuto, je relance la question de Gora qui m’intéresse également. Est-ce possible de laisser Excel générer un envoi de mail sans l’ouvrir (quand une échéance est atteinte par exemple).
Bonjour,
Super Tuto, merci beaucoup.
Je cherche à envoyer le mail à partir d’une autre adresse que celle par défaut d’Outlook.
En utilisant « De » dans le formulaire du message.
Y a-t-il moyen?
Si oui, comment ?
Merci pour votre aide
Bonjour,
Ca devrait être SendUsingAccount
Dans tous les tuto que j’ai essayé AUCUN ne fonctionne correctement et ce même en faisant du copier coller et en suivant les directives
Ne perdez pas votre temps avec lui
Bonjour,
J’aurais besoin d’envoyer un rapport d’intervention par mail sous forme de tableau. Seulement il faudrait uniquement les interevntions du jour.
Comment puis-je faire
Bonjour Daniel!
C’est vrai super votre formule et très simple.
J’aimerais pourvoir l’adapter en envoyant un Horaire de travail aux employés et mon tableau est de (« A1:H41 »). Es ce que vous pourriez m’aider S.V.P., Merci
Voici votre formule adapter au cellule de mon fichier
Private Sub Commande()
Dim LeMail As Variant
Dim Ligne As Integer
Set LeMail = CreateObject(« Outlook.Application »)
For Ligne = 4 To 41
If Range(« AB » & Ligne) = « Email » Then
With LeMail.CreateItem(olMailItem)
.Subject = « Horaire du » & Range(« B2 »)
.To = Range(« AC » & Ligne)
.Body = Range(« A1:H41 »)’Cette partie ne fonctionne pas
.Display
‘.Send
End With
End If
Next Ligne
End Sub
Bonjour et bravo pour ce tuto.
J’ai créé une macro qui envoyait bien le mail et la pièce jointe jusqu’à ce que decide de transformer le fichier Excel en modèle contenant des macros nommé « Nom ». Désormais quand je clique sur le modèle du fichier cela génère un nouveau fichier nommé « Nom1 ». Et la macro ne fonctionne plus.
Voici le contenu de la macro :
Dim LeMail As Variant
Set LeMail =CreateObject(« Outlook.application »)
With LeMail.createItem (olMailItem)
.Subject = « sujet du mail »
. To = « Destinataires »
. Body = corps du message
.Attachments.Add ActiveWorkbook.Fullname
.Display
End with
Donc la macro s’arrête a la ligne .Attachements
Comment résoudre ce problème.?
Merci par avance
Bonjour Sandra,
T’as pu enfin ressourdre le souci ? si oui peut tu m’aider stp
Merci pour ce Tuto très clair.
Bonjour,
La procédure est ok, cependant deux points restent en suspend :
• je n’arrive pas à émettre le mail sur une adresse mail en particulier ;
• malgré plusieurs test, j’arrive à insérer une pièce jointe unique mais pas à insérer une pièce jointe en fonction du mail.
Une idée ?
Bonjour,
Merci pour le super tutoriel. Dans Outlook, j’utilise plusieurs adresses mail comment sélectionner une adresse précise ?
Bonjour,
Je viens de suivre ton tuto super mais j’aimerais savoir comment faire si j’ai des listings variables, un nombre variable de destinataire
Mettre la signature dans le Mail aussi
Merci d’avance
Hello,
Si tu as trouvé comment faire je suis curieux de savoir car je rencontre le même problème.
Merci beaucoup
Bonjour, je pense que tu peux utiliser la fonction UsedRange.Rows pour déterminer le nombre de ligne.
Cette fonction détermine le nombre de ligne utilisées dans une feuille. Donc si tu veux, tu utiliser une feuille annexe comme carnet et avec la ligne ci-dessous, tu détermine le nombre de contact que tu rentre sous forme de variable appelons-la NbLigne.
NbLigne = Worksheets(« Sheet1 »).UsedRange.Rows.Count
Bonjour,
Tuto très clair et efficace.
Dans le corps du mail je souhaiterai en plus de texte y ajouter une sélection assez grande de cellule.
Voici le code:
Option Explicit
Sub Envoi_mail()
Dim Envoi_mail As Variant
Set Envoi_mail = CreateObject(« outlook.application ») ‘création d’un objet Outlook
With Envoi_mail.CreateItem(olMailItem)
.Subject = « JNC J-1 17h du » & Range(« AH1 ») ‘
.To = « vincent.molinaro@sncf.fr »
.Body = « Bonjour, » & Chr(10) & Chr(13) & « Voici le point sur les JNC à J-1 17h du » & Range(« AH1 ») & Chr(10) & Chr(13) & Range(« A1:S55 »).Select ‘
.Display
End With
End Sub
Tout le mail se génère bien sauf la sélection. A la place il est écrit « Vrai »
Merci
Bonjour, J’ai un souci avec votre procédure: le mail généré est dans une ancienne version d’outlook j’ai 2 versions d’installé sur mon ordi). En général cela ne pose pas de problème les deux se synchronise parfaitement. Les mails générés par la procédure ne s’envoient pas! tout semble OK mais aucun envoi n’est fait, ni enregistré dans les envoyés. J’ai essayé plein de choses, je n’arrive pas à trouver pourquoi. Avez-vous une idée?
Merci beaucoup
Bonsoir,
j’ai oublié de vous poser une question.
Dans votre exemple, il prend les mails dans une plage bien définie et limitée.
Dans mon cas, la liste est variable. elle peut être de 15 lignes comme 200.
comment lui dire de descendre les lignes jusqu’à rencontrer une cellule vide.?
Merciii
Pierre
Hello,
Si tu as trouvé comment faire je suis curieux de savoir car je rencontre le même problème.
Merci beaucoup
Bonsoir,
Merci pour ce tuto bien utile !!!
Petite question, j’ai téléchargé votre fichier mais il ne semble pas compatible avec ma version d’excel pourtant mise a jour et récente.
auriez vous la possibilité de me dire comment faire?
j’aurais voulu m’entrainer à partir de votre fichier.
merci beaucoup.
Pierre
Bonjour,
existe t’il un moyen de remplacer le bouton par un lien hypertexte dans une cellule
en effet dans mon fichier il y a plusieurs adresses emails je souhaiterais que suivant sur quelle cellule je clique il m’envoie le mail à l’ adresse dans la cellule correspondante
Merci d’avance
bonjour et merci pour le tuto
pouvez vous me dire si pour le corps du texte , il est possible de sélectionner une plage de cellules EX: ( b4 : f35) plutôt qu’une seule cellule comme vous l’avez fait dans la vidéo
cordialement
Bonsoir,
tout d’abord je vous remercies pour ce tuto.
je voudrais savoir s’il y a possibilité d’envoyer un mail automatiquement via excel avec une signature électronique?
merci d’avance.
Il est très facile d’envoyer un mail à l’ouverture du fichier mais le faire à une heure/un jour précis, ou régulièrement c’est plus dur (C’est possible mais dur).
A l’ouverture il suffit d’appeler la sub Auto_Open().
Bonjour, j’ai plusieurs boites mail dans mon outlook. Je n’arrive pas à faire émettre mes messages via vba depuis la bonne adresse mail. Comment puis-je faire?
Merci
Serge
C’est Génial! Je suis un enseignant et tu enseignes très bien!
Comment pourrais-je mettre le fichier Excel qui contient la macro en pièce jointe ?
Salut Daniel
Super ton tuto c’est ce que je recherchais, j’ai réussi à faire l’envoie à plusieurs personnes en Send avec la flèche verte de VBA
Mais au moment de sauvegarder le VBA j’ai un message d’erreur qui apparait :
« Les fonctionnalités suivantes ne peuvent pas être enregistrées dans des classeurs sans macro : Projet VB
Pour enregistrer un fichier avec ces fonctionnalités, cliquer sur non, puis sélectionnez un type de fichier prenant en charge les macros dans la liste de type de fichier.
Pour continuer a enregistrer en tant que classeur sans macro cliquez sur Oui »
Merci d’avance pour ton aide
David
Bonjour Richar
si vous sauvegarder un fichier excel avec du code vda vous devez le sauvegarder au format qui prend en compte les macro sinon vous perdez tous
Bonjour,
J’aimerais savoir comment automatiser un rappel via VBA sans ouverture Exel, est il possible?
bonjour, merci pour ce tuto, je relance la question de Gora qui m’intéresse également. Est-ce possible de laisser Excel générer un envoi de mail sans l’ouvrir (quand une échéance est atteinte par exemple).
Bonsoir,
Merci pour ce tuto 🙂
Sur cette base (envoi de plusieurs mails à partir de données dans un fichier Excel), j’ai besoin d’amener dans le corps du mail (Body) plusieurs éléments :
– du texte (genre « Bonjour, vous trouverez ci-après … »), suivi d’un retour à la ligne
– puis un premier tableau, suivi d’un retour à la ligne
– puis un second tableau (qui doit venir se placer sous le 1er) , suivi d’un retour à la ligne
– et enfin du texte (genre « Merci d’avance pour votre réponse, Cordialement etc »)
J’ai trouvé une solution pour coller les 2 tableaux en tant qu’images (ci-dessous le code pour le tableau 1):
Range(« d5:f5 »).CopyPicture
wDoc.Application.Selection.Paste
Set rng = wDoc.Content
mais le problème c’est qu’ils se mettent/collent systématiquement en 1ère position du corps de mail, donc avant les textes …
Je suppose qu’il doit y avoir moyen de forcer l’endroit où coller ces 2 images de tableaux ?
Merci d’avance pour votre aide
Très intéressant, merci bcp!
J’aimerais savoir si c’est possible d’automatiser l’envoi des courriels avec une macro.
bonjour Juliana,
oui cela est possible mais votre fichier excel doit être ouvert et le macro dois s’activer quand un certain evenement ou critère est TRUE
Bonjour Daniel,
Merci beaucoup pour ce tuto trés interessant.
Pouriez vous me montrer comment faire le macro pour qu’il envoie le mail quand la date present dans une colonne et la date du jour?
Bonjour,
comment joindre un fichier ?
Merci
Bonjour
Merci beaucoup pour le tuto, c’est genial.
Petite question, je souhaiterai que les macros se stoppend quand la ligne est vide, quelle formule inserer?
Encore merci!
Bonjour comment envoyer le mail à tout le monde dans un seul mail. Votre procédure envoie plusieurs séparément et moi je veux un seul mail pour toute ma liste de diffusion.
merci
Bonjour, est-il possible d’intégrer des lignes du tableau en fonction d’une condition?
Exemple : Envoyer toutes lignes de l’ensemble des personnes vivants en belgique dans un même email ?
Merci d’avance
oui,
il vous suffit de créer une boucle qui rempli le champs TO: depuis le résultat d’une condition
Bonjour,
J’aimerais savoir comment sélectionné une ligne à un autre dans le body
Exemple :
Dans le body j’aimerais sélectionné la colonne (K5:K20).
Cordialement
Bonjour,
Existe-t-il un tuto concernant l’envoi de pièces jointes ?
Merci pour votre tuto d’envoi mail très détaillé et explicite.
Cordialement.
Bonjour. Je dispose d’Office 2019 sur Mac et l’object OUTLOOK library est absent dans mes références. Comment faire ? Merci d’avance. Eric Toussaint
Bonjour,
Merci pour votre article très intéressant !
Je souhaiterais savoir si il y avait un moyen d’ajouter une image dans le corps du mail ?
Bonjour,
Existe t’il un moyen pour insérer une image dans le corps de texte ?
Trouvé:
.attachments.add « (c:\monfier.txt »)
Erreur c’est (« c:\monfichier.txt ») et non pas « (c:\monfichier.txt »)