Menu

Envoie de mail par macro sous excel [Fermé]

Messages postés
10
Date d'inscription
lundi 26 mars 2007
Dernière intervention
2 avril 2007
- - Dernière réponse :  xxxxxxxxxxxxxx - 7 mai 2011 à 22:24
Bonjour à tous,

J'aurais besoin d'un peu d'aide concernant les envoie automatique de mail via une macro sous excel.
J'ai développé cette macro et elle fonctionne très bien.
Cependant avant d'envoyer le mail, Outlook demande systématiquement une confirmation d'envoie, et moi j'aimerais supprimer cette confirmation ou du moins que cette confirmation ce fasse automatiquement de manière à ce que l'on ne puisse pas y répondre par "non".

Merci d'avance pour votre aide.
Bonne journée
Ugod
Afficher la suite 

9 réponses

Meilleure réponse
12
Merci
Pouquoi passer par un Mailto et SendKeys pour envoyer un message automatiquement.

Le Sendkeys see comporte exactement de la même manière que celui de AutoIt (qui est aussi un programme de développement libre).

En VBS, il y a la solution :

On Error Resume Next
With CreateObject("CDO.Message")
If Err Then
msgbox "Problème de CDO non installé sur le serveur WEB"
Else
.From="moi@toto.net"
.To="monvoisin@cara.fr"
.Bcc = "mavoisine@titi.com;moncousin@lycos.com;macousine@hotmail.com"
.Subject = "le sujet voulu"
.TextBody="Voici le corps du message." & vbCRLF & "Il a été testé via VBS." & vbCRLF & "Bonne réception"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "login_FREE"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password_FREE"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Configuration.Fields.Update
.AddAttachment("D:\\mon site\\fichier.csv")
.Send
If Err Then msgbox "Le message n'a pas pu être expédié."
End If
On Error GoTo 0
End With


Les valeurs à modifier sont assez parlantes (à mon avis).
login_FREE et password_FREE correspondent aux logins/passwords de vos comptes SMTP.

En VBA Excel, le code est exactement le même en le collant dans une macro (testé OK).

Voilà messieurs.

Dire « Merci » 12

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57010 internautes nous ont dit merci ce mois-ci

Salut,
Est-ce possible d'avoir le code pour l'envoi d'un courriel automatique par excel 2007, j'avais cette macro en 2003, mais elle ne fonctionne pas en 2007....
merci
yvon.chenier@sobeys.com
10
Merci
Hello,

j'ai eu beau relire plusieurs fois, j'ai pas compris :(

Quelqu'un pourrais me l'expliquer en novice? Ou m'envoyer la macro toute faite (oui d'acc c'est facile comme ça).

Mon fichier:

Les emails sont dans la colonne B (feuille Listing emails)
et le texte a envoyer en email se trouve sur la feuille Texto a enviar.

Y'à que 2 feuilles dans le fichier.

Merci d'avance
Bonjour,
Si vous avez recu le fichier avec la programmation, je suis aussi preneur. Certes le fichier vous appartient mais c'est le principe qui m'interresse
Merci pour votre compréhension
Cordialement
4
Merci
bonjour,

moi je cherche à copier un fichier txt avec différentes lignes vers le body de mail outlook via une macro excel
Messages postés
10
Date d'inscription
lundi 26 mars 2007
Dernière intervention
2 avril 2007
3
3
Merci
Merci de prendre soin des autres, mais c'est pas ça du tout...
Je vous explique pour qu'il n'y est pas de malentendu !

Je développe un petit logiciel pour ma société (un logiciel de suivi de budget) et mon chef m'a demandé à ce que le système lui envoie un mail automatique lorsque le budget du mois a été dépassé, de manière à ce qu'il puisse réagir rapidement.

Donc aucunement l'intention de porter atteinte à qui ou quoi que ce soit ! d'ailleurs je dois te dire que j'y avais même pas pensé.

Merci de votre compréhension et de votre aide
chère collègue développeur.

Ugod
Utilisateur anonyme -
_______________________1______________________________
# '
# ' Ce module permet l'envoi automatique d'un mail
# ' par le logiciel client SMTP par défaut du système
# '
# ' le principe est de créer un lien de type "mailto:"
# ' et de demander au programme appelant de suivre ce lien
# '
# ' Les arguments Adresse, Objet et Corps sont fournis à la procédure
# ' qui les utilise pour définir l'hyperlien qui sera activé par la méthode
# ' FollowHyperLink du classeur actif
# '
# ' le problème est que VB suit le lien
# ' (ici il lance le programme de messagerie en lui fournissant
# ' les infos nécessaires)
# ' puis se désintéresse du problème
# ' c'est donc à l'utilisateur de finir le travail :
# ' choix éventuel de la pièce jointe et envoi du message.
# '
# ' pour automatiser complètement le processus,
# ' on utilise une méthode un peu simpliste mais efficace :
# ' simuler l'appui sur les touches à utiliser pour envoyer le message
# ' à l'aide de l'instruction SendKeys.
# ' en temporisant les envois successifs de touches, on y arrive bien
# '
# ' Inconvénient de la méthode :
# ' chaque logiciel de messagerie utilise ses propres
# ' menus (donc touches) pour joindre un fichier et envoyer le message
# ' par exemple pour Outlook Express : menu Intsertion (touche:Alt-I)
# ' puis le sous menu Pièce (touche : P)
# ' et l'envoi du message se fait par Alt-Entrée
# '
# ' pour pallier à cet inconvénient, je propose de stocker dans 2 tableaux
# ' TouchesPJ() et TouchesEnvoi()
# ' l'enchaînement de touches à utiliser par chaque client messagerie
# ' je fournis ici l'initialisation des tableaux pour les 3 clients
# ' dont je dispose sur ma machine :
# ' Mozilla ThunderBird,
# ' Outlook Express,
# ' et Office 2003 Outlook
# ' il suffit donc d'activer l'initialisation qui va bien
# ' pour le client utilisé.
# ' on pourrait aller gratter dans la base de registre pour le trouver
# ' mais outre que si on tombe sur un logiciel de messagerie
# ' un peu exotique et non prévu dans notre liste, on est mal,
# ' surtout cela compliquerait un programme sans prétention
# ' mais qui est simple et accessible à tous
# '
# ' Bon, assez parlé, un peu de code maintenant
# ' ------------------------------------------------------------------
# Option Explicit
# ' ------------------------------------------------------------------
# 'Déclaration des tableaux qui recevront les touches à utiliser suivant
# ' le logiciel de messagerie par défaut du système.
# ' Déclarés ici, les tableaux ont une portée qui couvre tout le module
# Dim TouchesPJ(5) As String, TouchesEnvoi(5) As String
#
# ' ------------------------------------------------------------------
# ' Procédure principale qui compose les éléments du message
# ' et effectue la demande d'envoi
# ' c'est cette procédure qui sera appelée par le programme principal
# ' (ici Excel)
# '
# Sub EnvoiEmail(Adresse As String, Objet As String, Corps As String, Optional PJ As String)
# ' Remarque : l'argument PJ (pièce jointe) est optionnel. S'il est fourni,
# ' c'est le chemin complet du fichier à joindre qui doit être fourni
# ' pour joindre plusieurs pièces, il faudrait que PJ soit
# ' un tableau et qu'il soit traité + bas par une boucle...
# Dim HyperLien As String ' Reçoit les éléments de l'hyperlien
# ' composés avec les arguments fournis
# Dim i As Integer ' un compteur
# Dim Client As Integer
# ' la syntaxe de base du mailto est la suivante :
# ' mailto:dest@domaine?Subject=sujet du message&Body=corps du message
# ' je ne prends pas en compte les copies, copies cachées
# ' ou autres confirmation de lecture, je suppose
# ' qu'il faudrait utiliser d'autre arguments de mailto...
#
# HyperLien = "mailto:" & Adresse & "?"
# ' Le ? introduit les arguments
# HyperLien = HyperLien & "Subject=" & Objet & " (à " & Time() & ")"
# HyperLien = HyperLien & "&Body=" & Corps
# ' le & sépare les arguments
#
# ' Activation du lien
# '
# ' Pour Excel (les autres doivent être en commentaire)
# ActiveWorkbook.FollowHyperlink HyperLien
# ' Pour Word (les autres doivent être en commentaire)
# ' ThisDocument.FollowHyperlink HyperLien
# ' Pour Access (les autres doivent être en commentaire)
# ' Application.FollowHyperlink HyperLien
#
# Attendre 5 ' Appel d'une procédure qui temporise
# ' c'est à dire que la procédure courante
# ' (ici EnvoiEmail) est suspendue pendant 5s
# ' cela permet d'Attendre que le client
# ' de messagerie soit lancé et prêt
# ' avant d'envoyer les touches
# ' sinon ce serait le programme appelant
# ' (ici Excel) qui recevrait les touches
#
# Client = 1 ' 1=Outlook Express
# ' 2=Mozilla Thunderbird
# ' 3=Office Outlook
#
# Select Case Client ' appel du chargement des tableaux des touches
# ' selon le client de messagerie indiqué
# Case 1
# OutLookExpress
# Case 2
# MozillaThunderbird
# Case 3
# Office2003OutLook
# Case Else
# MsgBox "Aucun client de messagerie connu n'est indiqué"
# Exit Sub
# End Select
#
# ' Le traitement de la pièce jointe ne s'exécute
# ' que si la procédure à reçu qqchose
# ' dans l'argument PJ (Optional<=>Facultatif)
#
# If PJ <> "" Then
# ' dans TouchesPJ(0) on a stocké le nombre de touches
# ' à envoyer au programme pour joindre une pièce
# For i = 1 To TouchesPJ(0) ' pour chaque touche à envoyer
# SendKeys TouchesPJ(i), True ' Envoi de la touches
# Attendre 1 ' temporise (à règler éventuellement)
# Next i
# SendKeys PJ, True 'A ce stade le programme attend un nom de fichier
# ' on lui envoie
# Attendre 1 ' on temporise
# SendKeys "{ENTER}", True ' et on valide ce nom de fichier
# Attendre 1
# End If
# For i = 1 To TouchesEnvoi(0) ' idem pour les touches d'envoi
# ' du message
# SendKeys TouchesEnvoi(i), True
# Next i
# ' Fin de la procédure principale
# End Sub
# ' -----------------------------------------------------------------
# Sub Attendre(Secondes As Integer)
# ' Cette procédure temporise pendant le nombre
# ' de secondes qu'on lui transmet en argument
# Dim Début As Long, Fin As Long, Chrono As Long
# Début = Timer
# Fin = Début + Secondes
# Do Until Timer >= Fin
# DoEvents
# Loop
# End Sub
#
#
# Sub OutLookExpress()
# 'Initialisation des tableaux de touches pour Outlook Express
# ' Pour une pièce jointe
# TouchesPJ(0) = 2 ' Nombre de touches nécessaires
# TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i
# TouchesPJ(2) = "p" ' appel du sous-menu pièce par la touche p
# ' Pour l'envoi du mail
# TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
# TouchesEnvoi(1) = "%s" ' Envoi du message avec Alt-s
# End Sub
#
# Sub MozillaThunderbird()
# 'Initialisation des tableaux de touches pour Mozilla Thunderbird
# ' Pour une pièce jointe
# TouchesPJ(0) = 3 ' Nombre de touches nécessaires
# TouchesPJ(1) = "%f" ' Appel du menu Fichier par la touche Alt-f
# TouchesPJ(2) = "j" ' appel du sous-menu Joindre par la touche j
# TouchesPJ(3) = "f" ' sous-sous-menu Fichier par la touche f
# ' Pour l'envoi du mail
# TouchesEnvoi(0) = 2 ' Nombre de touches nécessaires
# TouchesEnvoi(1) = "^{ENTER}" ' Envoi du message avec Ctrl-Entrée
# TouchesEnvoi(2) = "{ENTER}" ' confirmation par Entrée
# End Sub
#
# Sub Office2003OutLook()
# 'Initialisation des tableaux de touches pour Office Outlook
# ' Pour une pièce jointe
# TouchesPJ(0) = 2 ' Nombre de touches nécessaires
# TouchesPJ(1) = "%i" ' Appel du menu Insertion par la touche Alt-i
# TouchesPJ(2) = "f" ' appel du sous-menu fichier par la touche f
# ' Pour l'envoi du mail
# TouchesEnvoi(0) = 1 ' Nombre de touches nécessaires
# TouchesEnvoi(1) = "%v" ' Envoi du message avec Alt-v
# End Sub



____________________2_________________________________
# '//TRES IMPORTANT: il faut faire un regsrv de la Dll de Notes qui n'est pas forcément identifié par VB
# '(ex: DEMARRER > EXECUTER puis "regsrv32 C:\progra~1\Lotus\Notes\nlsxbe.dll" (modifier en fonction du chemin de votre
# 'lotus)
#
# '//AJOUTER LA REFERENCE SUIVANTE ("projet > reference"): LOTUS DOMINO OBJECTS (qui correspond à domobj.tbl)
# '*************************************************************************************************************
# Function prvSendNotesMail(Subject As String, Attachment As String, Recipient As String, BodyText As String, SaveIt As Boolean) As Boolean
# '*********************************************
# 'Repris et développé par EvilGost
# 'Subject: Sujet du mail / Attachment: Chemin complet du fichier à attacher (ex: "C:\test.txt"), sinon, mettre "" /
# 'Recipient: Destinataire (ex: "jeanlouis@wanadoo.fr") / Bodytext: Texte du mail / SaveIt: sauvegarde du mail dans les courriers envoyés
# '*************************************************************************************************************
# 'Set up the objects required for Automation into lotus notes
# Dim Maildb As NotesDatabase 'The mail database
# Dim UserName As String 'The current users notes name
# Dim MailDoc As Object 'The mail document itself
# Dim AttachME As Object 'The attachment richtextfile object
# Dim oSession As NotesSession
# Dim dbDirectory As NotesDbDirectory
# Dim EmbedObj As Object 'The embedded object (Attachment)
#
# On Error GoTo ErrHandle
#
# Set oSession = New NotesSession
# 'Démarre une session de notes
# 'La ligne suivante ne marche qu'avec les versions 5.x et 6.x , c'est l'injection du mot de passe
#
# oSession.Initialize ("Mot de passe")
#
# 'Récupère le nom par défaut de la session
# UserName = oSession.UserName
#
# 'Ouvre la base mail en utilisant le serveur par défaut
# Set dbDirectory = oSession.GetDbDirectory("") 'vous pouvez mettre l'adresse du serveur dans ces parentheses
# Set Maildb = dbDirectory.OpenMailDatabase
#
# 'Création du formulaire d'envoi de mail
# Set MailDoc = Maildb.CreateDocument()
#
# MailDoc.AppendItemValue "Subject", Subject 'remplissage du Sujet
# MailDoc.AppendItemValue "SendTo", Recipient 'si vous passer un tableau de string() en paramètre, vous pouvez mettre plusieurs destinataire (ex: Recipient(2))
# MailDoc.AppendItemValue "Body", BodyText 'Corps du mail
#
# 'Permet d'attacher un document au mail
# If Attachment <> "" Then
# Set AttachME = MailDoc.CreateRichTextItem("Attachment")
# Set EmbedObj = AttachME.EmbedObject(1454, "", Attachment, "Attachment")
# End If
#
# 'Envoi le document
#
# If SaveIt = True Then
# MailDoc.SaveMessageOnSend = SaveIt 'si à True, Lotus sauvegarde le mail envoyé
# End If
#
# Call MailDoc.Send(False) 'j'obtiens une erreur lorsque je mets true au lieu de false, si quelqu'un sait pourquoi
#
# prvSendNotesMail = True
# GoTo ExitHandle
#
# ErrHandle:
# Msgbox Err.Description
# prvSendNotesMail = false
#
# ExitHandle:
# 'Vidage mémoire
# Set Maildb = Nothing
# Set MailDoc = Nothing
# Set AttachME = Nothing
# Set oSession = Nothing
# Set dbDirectory = Nothing
# Set EmbedObj = Nothing
# End Function

On m'a envoyé ces deux fichier ca marche sans reponses de votre part.
> Utilisateur anonyme -
Merci d'avoir répondu de manière aussi pro.
je vais essayer ça.

encore merci
ugod


PS: si je veux envoyer un mail à plusieurs destinataires comment dois-je mis prendre??
Utilisateur anonyme > ugod21 -
de rien a+
> Utilisateur anonyme -
Bonjour,
Je suis très interessé par le code VB permettant d'envoyer des mails avec excel. Il répond tout à fait à ce que je souhaite. Par contre je suis complètement novice dans ce type de language et j'utilise les macro d'excel4 (pas facile de se remettre au niveau!!!). Donc je souhaite utiliser ce code, toutefois je rencontre 2 petits problèmes.
Le premier vient du fait que je souhaiterais stocker les mails à envoyer avec pièce jointe dans la boîte d'envoi avant de les transmettre (afin de vérifier si tout est en ordre. Pour arriver à cela je me déconnecte d'internet. or en faisant cela, à chaque mail, une boîte m'indique qu'il y a un problème de connection et cela bloque la création correcte du mail suivant avec pièce jointe. Quel code intégrer pour fermer automatiquement ce message.
D'autre part, en fonction de la transmisssion d'un mail avec pièces jointes ou pas, les temporisations pourraient être différentes (grosse différence de durée de transmission si on envoie une centaine de mails). Serait-il possible d'avoir dans un tableau d'une feuille excel la spécification des différentes tempo.
Merci d'avance si vous pouvez répondre à mes questions.
Cordialement
Jean
2
Merci
Bonjour, j'ai un problème similaire, je dois utiliser un bouton qui quand je clic dessus m'envoie par mail automatiquement mon fichier excel ou j'ai activer le bouton.
Seulement je n'utilise pas outlook, mais lotus note, donc je voulais avoir un exemple général du code vb, pour le parametrés avec ma boite de messagerie.

Aussi, je souhaite renvoyer ce fichier excel à plusieurs contact qui utilise eux aussi lotus note(version 6.5), donc voilà ce fichier exel sera présent en pièce jointe.
Messages postés
1568
Date d'inscription
jeudi 19 juillet 2007
Dernière intervention
29 juin 2015
315
1
Merci
Bonjour moi il me faudrait la même chose que mister mais que ça envoi le fichier ouvert sur lequel on travail en fichier joint et qui plus est sur open office calc ^^
1
Merci
oui je cherche du boulot donne moi je suis en cote d'ivoire
0
Merci
Pourquoi veut tu qu'on ne peut pas refuser?
Je pense pas quand va te répondre car tu peux que faire des truc pas net.
0
Merci
ah oui est ce que ca marche????

et dis moi pk tu veux faire sauter une drm???