Macro pour envoi d'emails

A

Askan

Guest
Bonjour à tous!!

Une question à 10000 points!!... ;)
Est-il possible de créer une macro qui permettrait d'envoyer des emails à des destinataires différents?
Je m'explique, car plusieurs étapes sont en amont de cet envoi!
A partir de deux fichiers .xls mis a our régulièrement et qui seront 'fusionnes' après leur mise à jour respective, je souahite pouvoir envoyer ces fichiers à des clients différents. Ces emails seront donc différents les uns des autres à peu de chose près mais différents. En effet, ces fichiers xls diffèrent en fonction des clients. En résumé, mise à part le contenu des fichiers, les étapes de la macro seraient les mêmes. Je pensais à une liste de choix qui permettrait de selectionner le client et déclencher la macro avec les fichiers respectifs....
Qq'un pourrait répondre à cette question svp?????
Merci bokou...
 

fradouan

XLDnaute Junior
bonsoir
voici ce que j'ai trouvé si qlq peu adapter et ameliorer moi aussi je suis preneur
Attribute VB_Name = 'MailAvecOutlookExpress'

Sub MailOXpress()
Dim dest$, sujet$, texte$

dest = 'f.s@wanadoudou.disdonc'
sujet = 'Envoyer un mail depuis Xl'
texte = 'Envoyé avec Outlook Express depuis Excel'
Shell 'C:\\Program Files\\Outlook Express\\msimn.exe ' & _
'/mailurl:mailto:' & dest & _
'?subject=' & sujet & _
'&Body=' & texte & ', 3'
End Sub

'modifié par Eric Humeau, mpfe
'pour envoyer aussi un classeur en pièce jointe
Sub MailOXpress2()
Dim dest$, sujet$, texte$

Dim Rep
Application.ScreenUpdating = False

'Rep est le nom de ton fichier à joindre.
Rep = 'c:\\test1.xls'
dest = 'zaza@mpfe.fr'
sujet = 'Envoyer un mail depuis Xl'
texte = 'Envoyé avec Outlook Express depuis Excel'
Shell 'C:\\Program Files\\Outlook Express\\msimn.exe ' & _
'/mailurl:mailto:' & dest & _
'?subject=' & sujet & _
'&Body=' & texte & ', 3', vbMaximizedFocus

'envoi à OE5.5, une combinaison de touche qui équivaut à faire insertion
'pièce jointe, joindre le fichier contenu dans la variable Rep, valider puis
'envoyer.
SendKeys '%I' & 'p' & Rep & '~' & '%s'
End Sub
 
A

Askan

Guest
Bonjour,

Je pense que l'on se rapproche de ma réponse mais si je comprends bien les lignes de codes cela signifie que je vais devoir créer une macro pour client???...Je souhaiterais si possible avoir une macro qui me permettrait de selectionner les clients à qui je souhaite envoyer le mail...Il me semble que ce code est fait pour un client en particulier...dans le code dest='adresse mail du client?', nest ce pas??? et Shell 'C:program FilesOutlook Expressmsimn.exe' correspond au chemin pour avoir le fichier à envoyer???...
Je rappelle qu'il y a plus de 600 clients à traiter...
Merci pour l'aide
 
J

Jean Leysens

Guest
Je t'envoie ci dessous le code d'une macro qui te permettra de générer des mails à partir d'EXCEL :
Set objmail = CreateObject('Outlook.Application')
Set objitem = objmail.CreateItem(olMailItem)
Set myRecipient = objitem.Recipients.Add('jean Leysens')
Set mapiecejte = objitem.Attachments
mapiecejte.Add ThisWorkbook.Path & '\\monfichier.xls'
objitem.body = 'blablabla'
objitem.Subject = 'monbody'
objitem.display
objitem.Save
objitem.send

A la place du nom, tu peux utiliser une liste d'adresse dans un onglet du classeur et récupérer les adresses avec une boucle type for each next. Bon courage.
 
J

Jean Leysens

Guest
Je t'envoie ci dessous le code d'une macro qui te permettra de générer des mails à partir d'EXCEL :
Set objmail = CreateObject('Outlook.Application')
Set objitem = objmail.CreateItem(olMailItem)
Set myRecipient = objitem.Recipients.Add('jean Leysens')
Set mapiecejte = objitem.Attachments
mapiecejte.Add ThisWorkbook.Path & '\\monfichier.xls'
objitem.body = 'blablabla'
objitem.Subject = 'monbody'
objitem.display
objitem.Save
objitem.send

A la place du nom, tu peux utiliser une liste d'adresse dans un onglet du classeur et récupérer les adresses avec une boucle type for each next. Bon courage.
 
A

Askan

Guest
Merci Jean...mais une autre question car mes compétences en VBA sont limitées...
Quand je lance la macro, une boite de dialogue s'affiche en marquant '...fichier introuvable...' Cette expression '& 'monfichier.xls' , il s'agit du chemin du fichier ??? Dois-je rajouter le complément du genre C:\\Mes documents..\\monfichier.xls' ???

Merci Jean
 
J

Jean

Guest
Askan,
'monfichier.xls' est un nom générique, il faut que tu le remplaces par le nom de ton propre fichier.
Je t'explique la macro :
set est une propriété VBA qui permet de créer un objet.
Set objmail crée grace à la fonction 'createobject' une référence à outlook.
set objitem crée un message mail grace à la méthode 'createitem'
set myrecipient crée une adresse dans le mail grace à l'objet /méthode recipients.add
set mapiecejte crée une pièce jointe grace à la l'objet/méthode Attachments.add
il faut bien entendu indiquer le chemin d'accés et le nom de la pièce à joindre :
Thisworkbook.path indique que la pièce à joindre se trouve dans le même répertoire que le classeur de la macro. Si ce n'est pas le cas pour ce que tu veux faire, il faut indiquer le chemin sous la forme 'c:\\.....
objitem.body est destiné à saisir le message dans le corps du mail
objitem.subject : saisit le sujet du message dans le champs objet du mail,
objitem.display : affiche le message
onjitem.save sauvegarde le message
obitem.send : envoie le message.
j'espère que je suis clair. Mais n'hésites pas à me relancer.
bye.
 
A

Askan

Guest
Jean,
Merci beaucoup pour ces précisions. J'avais effectivement bien compris qu'il s'agissait d'un terme générique.
Concernant les fichiers, ils se trouveront sur mon C: ou bien sur le serveur commun...pas ds la classeur..
Je dois donc changer le chemin 'mapiecejte.Add ThisWorkbook.Path & 'monfichier.xls' PAR '\\C:\\Mes Documents\\...nomdufichier'...je vais tenter tout ça de suite! Dois-je conserver mapiecejte.Add avant d'indiquer le chemin???

Merci
 
A

Askan

Guest
Jean!!!
C top il semble que ça marche!...par contre tout fonctionne comme si le mail partait mais rien est reçu et rien ne figure ds 'éléments envoyés' de MSOutLook Express...As tu une explication stp?
Autre chose, quand le mail fait mine de partir je n'ai aucune action possible avant son envoi...je ne peux donc pas vérifier le mail avant?????
Merci d'avance
 
J

Jean LEYSENS

Guest
Bonjour Askan,
désolé pour la réponse tardive, mais je ne suis pas un encodeur fou.
Tu dois simplement remplacer 'This workbook.path' par le chemin d'accés à ton fichier par exemple 'c:\\mesdocuments\\mesclients\\statvente.xls'
la ligne de code sera donc: mapiecejte.Add 'c:\\Mesdocuments\\mesclients\\statvente.xls'.
Ca doit marcher.
OK ?
 
J

jean LEYSENS

Guest
Ce qui se passe c'est que l'instruction 'createobject' ne fonctionne que pour l'appel de Outlook, elle n'est pas sensée marcher pour outlook express. J'ai essayé de trouver pour outlook express, mais à priori il n'y a pas dans EXCEL 2000 de controle activex adapté.
Je suis donc désolé mais je ne peux pas t'aider. Il faudrait que tu utilises Microsoft outlook pour que ça marche.

Pour vérifier le mail avant envoi, il faut stopper la macro au bon moment par une instruction du type 'msgbox', qui te demandera si tu veux envoyer le mail ou non.
Je veux bien t'aider là aussi si tu peux utiliser outlook. Dans le cas contraire ca vaut pas le coup.
A te lire.
 
A

Askan

Guest
Bonjour Jean!!
Je suis navré pour cette réponse très tardive mais je n'étais pas connecté depuis un petit moment..Je reprends donc tout ça et vais vérifier ds la journée ce que tu proposes.
Merci encore. A très bientôt, je pense!!
 

Discussions similaires

Réponses
22
Affichages
2 K

Statistiques des forums

Discussions
312 153
Messages
2 085 802
Membres
102 981
dernier inscrit
fred02v