Notre modèle de code vous aidera à configurer des e-mails automatisés à partir d'Excel à l'aide de CDO (Collaboration Data Objects) et de scripts VBA.

Comment envoyer des courriels à partir d'une feuille de calcul Excel à l'aide de scripts VBA

Publicité Pour envoyer des courriers électroniques de 5 façons de rédiger des courriels professionnels qui permettent d'économiser du temps et de l'énergie 5 façons de rédiger des courriels professionnels qui gagnent du temps et de faire des efforts Laissez ces modèles d'e-mails vous aider. Lire da

Publicité

Pour envoyer des courriers électroniques de 5 façons de rédiger des courriels professionnels qui permettent d'économiser du temps et de l'énergie 5 façons de rédiger des courriels professionnels qui gagnent du temps et de faire des efforts Laissez ces modèles d'e-mails vous aider. Lire davantage à partir de Microsoft Excel ne nécessite que quelques scripts simples. Ajoutez cette fonctionnalité à vos feuilles de calcul et vous pourrez vraiment améliorer vos performances dans Excel.

Déverrouillez la feuille de triche "Essential Excel Formulas" maintenant!

Cela vous inscrira à notre newsletter

Entrez votre email Déverrouiller Lire notre politique de confidentialité

Nous avons traité de nombreuses macros Excel excellentes, capables de réaliser les mêmes tâches que les scripts VBA, mais sans connaissances en programmation. Mais il existe de nombreuses choses avancées que vous ne pouvez faire qu'avec VBA, comme créer un rapport de feuille de calcul avec toutes les informations de votre PC.

Vous préférez regarder ce tutoriel en vidéo? Nous avons ce qu'il vous faut!

Pourquoi envoyer un email à partir d'Excel?

Il existe de nombreuses raisons pour lesquelles vous pouvez envoyer un courrier électronique à partir de Microsoft Excel.

Vous avez peut-être des employés qui mettent à jour des documents ou des feuilles de calcul toutes les semaines et vous souhaitez recevoir une notification par courrier électronique indiquant le moment où ces mises à jour sont effectuées. Ou vous pourriez avoir une feuille de calcul de contacts et vous voulez envoyer un email à tous à la fois.

Vous pensez probablement que la création d'un script pour une diffusion de courrier électronique à partir d'Excel sera compliquée. Ce n'est pas le cas du tout.

La technique décrite dans cet article utilisera une fonctionnalité disponible depuis longtemps dans Excel VBA, Collaboration Data Objects (CDO).

objets de données de collaboration (CDO) dans Excel

CDO est un composant de messagerie utilisé dans Windows depuis les toutes premières générations du système d'exploitation. Il s'appelait CDONTS et, avec l'avènement de Windows 2000 et XP, a été remplacé par «CDO pour Windows 2000». Ce composant est déjà inclus dans votre installation VBA sous Microsoft Word ou Excel et est prêt à être utilisé.

L'utilisation de ce composant facilite l'envoi de courriers électroniques à partir de produits Windows avec VBA. Dans cet exemple, vous utiliserez le composant CDO dans Excel pour envoyer un courrier électronique contenant les résultats d'une cellule Excel spécifique.

Étape 1: créer une macro VBA

La première étape consiste à accéder à l'onglet Développeur Excel.

Dans l'onglet Développeur, cliquez sur Insérer dans la zone Contrôles, puis sélectionnez un bouton de commande.

ajout de bouton dans Excel

Dessinez-le dans la feuille, puis créez une nouvelle macro en cliquant sur Macros dans le ruban Développeur.

Ajouter une macro pour le bouton de commande

Lorsque vous cliquez sur le bouton Créer, l'éditeur VBA s'ouvre.

Ajoutez la référence à la bibliothèque CDO en accédant à Outils > Références dans l'éditeur.

ajout de références dans Excel

Faites défiler la liste jusqu'à trouver Microsoft CDO pour la bibliothèque Windows 2000 . Cochez la case et cliquez sur OK .

ajout de cdo pour windows reference

Lorsque vous cliquez sur OK, notez le nom de la fonction où vous collez le script. Vous en aurez besoin plus tard.

Étape 2: Configuration des champs «De» et «À» du CDO

Pour ce faire, vous devez d’abord créer les objets courrier et définir tous les champs nécessaires à l’envoi du courrier électronique.

N'oubliez pas que, si de nombreux champs sont facultatifs, les champs De et À sont obligatoires.

 Dim CDO_Mail As Object Dim CDO_Config As Object Dim SMTP_Config As Variant Dim strSubject As String Dim strFrom As String Dim strTo As String Dim strCc As String Dim strBcc As String Dim strBody As String strSubject = "Results from Excel Spreadsheet" strFrom = " " strTo = " " strCc = "" strBcc = "" strBody = "The total results for this quarter are: " & Str(Sheet1.Cells(2, 1)) 

La bonne chose à propos de cela est que vous pouvez créer n'importe quelle chaîne pour personnaliser un message électronique complet et l'affecter à la variable strBody .

Assemblez les composants du message à l'aide de la chaîne & pour insérer des données à partir de n'importe quelle feuille Microsoft Excel directement dans l'e-mail, comme illustré ci-dessus.

Étape 3: Configurez CDO pour utiliser un SMTP externe

La prochaine section de code indique où vous allez configurer CDO pour qu'il utilise un serveur SMTP externe pour envoyer le courrier électronique.

Cet exemple est une configuration non-SSL via Gmail. CDO est capable de SSL, mais cela sort du cadre de cet article. Si vous devez utiliser SSL, ce code avancé de Github peut vous aider.

 Set CDO_Mail = CreateObject("CDO.Message") On Error GoTo Error_Handling Set CDO_Config = CreateObject("CDO.Configuration") CDO_Config.Load -1 Set SMTP_Config = CDO_Config.Fields With SMTP_Config .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = " " .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password" .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Update End With With CDO_Mail Set .Configuration = CDO_Config End With 

Étape 4: finaliser la configuration de CDO

Maintenant que vous avez configuré la connexion au serveur SMTP pour l'envoi du courrier électronique, il vous suffit de renseigner les champs appropriés pour l' objet CDO_Mail et d'émettre la commande Envoyer .

Voici comment vous faites cela:

 CDO_Mail.Subject = strSubject CDO_Mail.From = strFrom CDO_Mail.To = strTo CDO_Mail.TextBody = strBody CDO_Mail.CC = strCc CDO_Mail.BCC = strBcc CDO_Mail.Send Error_Handling: If Err.Description "" Then MsgBox Err.Description 

Il n'y aura aucune boîte de dialogue ou message d'alerte de sécurité susceptible de se produire lorsque vous aurez recours à l'objet courrier Outlook.

CDO rassemble simplement le courrier électronique et utilise les informations de connexion de votre serveur SMTP pour envoyer le message. C'est le moyen le plus simple d'intégrer le courrier électronique dans les scripts VBA Microsoft Word ou Excel.

Pour connecter votre bouton de commande à ce script, allez dans l'éditeur de code et cliquez sur Sheet1 pour afficher le code VBA de cette feuille de calcul.

Tapez le nom de la fonction où vous avez collé le script ci-dessus.

connecter le bouton de commande au script

Voici à quoi ressemble le message que j'ai reçu dans ma boîte de réception:

excel email reçu

Remarque : Si vous recevez une erreur indiquant que le transport n'a pas réussi à se connecter au serveur, assurez-vous que vous avez entré le nom d'utilisateur, le mot de passe, le serveur SMTP et le numéro de port corrects dans les lignes de code répertoriées sous With SMTP_Config .

Allez plus loin et automatisez l'ensemble du processus

C'est bien beau de pouvoir envoyer des courriels à partir d'Excel d'une simple pression sur un bouton. Toutefois, vous souhaiterez peut-être utiliser cette fonctionnalité régulièrement. Dans ce cas, il serait logique d'automatiser le processus. 5 Ressources pour les macros Excel pour automatiser vos feuilles de calcul 5 Ressources pour les macros Excel pour automatiser vos feuilles de calcul Vous recherchez des macros Excel? Voici cinq sites qui ont ce que vous cherchez. Lire la suite .

Pour ce faire, vous devrez modifier la macro. Dirigez-vous vers Visual Basic Editor et copiez-collez l'intégralité du code que nous avons mis en place.

Ensuite, sélectionnez ThisWorkbook dans la hiérarchie du projet .

Dans les deux champs déroulants en haut de la fenêtre de code, sélectionnez Classeur, puis sélectionnez Ouvrir dans le menu déroulant Méthodes.

Collez le script de messagerie ci-dessus dans Private Sub Workbook_Open () .

Cela exécutera la macro chaque fois que vous ouvrez le fichier Excel.

Coller le script email

Ensuite, ouvrez le Planificateur de tâches .

Vous allez utiliser cet outil pour demander à Windows d’ouvrir automatiquement la feuille de calcul à intervalles réguliers, moment auquel votre macro sera lancée en envoyant le courrier électronique.

créer une tâche de base dans le planificateur de tâches

Sélectionnez Créer une tâche simple dans le menu Action et suivez les étapes de l'assistant jusqu'à l'écran Actions .

Sélectionnez Démarrer un programme et cliquez sur Suivant .

sélectionner le planificateur de tâches du programme

Utilisez le bouton Parcourir pour rechercher l'emplacement de Microsoft Excel sur votre ordinateur ou copiez et collez le chemin dans le champ Programme / script .

Ensuite, entrez le chemin d'accès à votre document Microsoft Excel dans le champ Ajouter des arguments .

Terminez l'assistant et votre planification sera en place.

Effectuer un test en programmant l'action Comment vider automatiquement la corbeille dans un programme et libérer de l'espace inutilisé Comment vider automatiquement la corbeille dans un programme et libérer de l'espace inutilisé Si vous ne videz pas régulièrement le dispositif de recyclage Bin, cela pourrait gaspiller des gigaoctets d'espace sur votre lecteur de données. Mais maintenant, Windows 10 peut le vider automatiquement selon un planning. Lisez Plus pendant quelques minutes dans le futur, puis modifiez la tâche une fois que vous pouvez confirmer que cela fonctionne.

Remarque : Il se peut que vous deviez ajuster vos paramètres du Centre de gestion de la confidentialité pour vous assurer que la macro fonctionne correctement.

Pour ce faire, ouvrez la feuille de calcul et naviguez jusqu'à Fichier > Options > Centre de gestion de la confidentialité .

À partir de là, cliquez sur Paramètres du Centre de gestion de la confidentialité, puis sur l'écran suivant, définissez le numéro de la radio sur Ne jamais afficher les informations relatives au contenu bloqué .

Faites travailler Microsoft Excel pour vous

Microsoft Excel est un outil incroyablement puissant, mais apprendre à en tirer le meilleur parti peut être un peu intimidant. Si vous voulez vraiment maîtriser le logiciel, vous devez être à l'aise avec VBA, et ce n'est pas une mince tâche.

Cependant, les résultats parlent d'eux-mêmes. Avec une petite expérience de VBA à votre actif, vous serez bientôt en mesure de faire exécuter automatiquement par Microsoft Excel des tâches de base, ce qui vous laissera plus de temps pour vous concentrer sur des tâches plus urgentes.

Il faut du temps pour développer une expertise avec VBA, mais vous verrez bientôt les fruits de votre travail si vous en restez fidèle.

Un excellent endroit pour commencer est notre didacticiel faisant autorité sur l'utilisation de VBA dans Excel. Didacticiel pour débutant sur la rédaction de macros VBA dans Excel (et pourquoi vous devriez apprendre) Didacticiel pour débutant sur la rédaction de macros VBA dans Excel (et pourquoi vous devriez apprendre) si vous utilisez Excel régulièrement, il est utile d’apprendre à créer des macros VBA et à accéder à de nombreuses autres fonctions et capacités. Lire la suite . Une fois que vous avez terminé, ce script simple pour envoyer des courriels à partir d'Excel sera un jeu d'enfant.

Pour en savoir plus sur: conseils de messagerie, Microsoft Excel, conseils de Microsoft Office, programmation, programmation Visual Basic.