VBA: Générer un mail avec pièces jointes

S

SVri

Guest
Bonjour à tou(te)s !

Je suis à la recherche d'exemples de code permettant de générer des emails avec pièces jointes (par ex. l'email du dest. est dans la col. A, le chemin des PJ est dans la co. B, ...)

J'ai consulté le fichier C:\Program Files\Microsoft Office\Office\Samples\SAMPLES.XLS (Merci Thierry dans "monexcel-downloads.xls"!), mais rien sur les PJ !

Merci et bonne journée !
 
S

SVri

Guest
OK, Merci Valérie (qui rit) !

Ce code permet d'envoyer le classeur en PJ.

Il ne me manque plus que le code qui permet d'ajouter un autre doc en PJ (un ou n fichier(s) PDF, dans mon cas)

Après recherche sur le forum, j'ai retrouvé un fil entre Ti et STephane, mais pas de réponse au bout ...

???

Merci !
 
M

michael

Guest
Bonjour,

si tu n'as pas encore de réponse à ta question, voici une possibilité :

Set oOutlook = CreateObject("Outlook.Application")
Set oNewMail = oOutlook.CreateItem(olMailItem)

With oNewMail
.Attachments.Add '<-- Ici le fichier à joindre
.Recipients.Add '<-- destinataire de l'email
.Recipients.Add("machin@machin.com").Type = olCC '<-- destinaire Cc
.Subject = "Sujet" '<-- Sujet de l'email
.Body = "bla bla bla" '<-- Texte de l'email
End With

Michael.
 
@

@+Thierry

Guest
Bonjour SVri et Valérie ... et Riri et l'Euphori euh non "le Fori" .... Oups le Forum !

Ouh là, c'est déjà plus délicat comme question... Voici un code de STéphane dont j'ai eu besoin à l'époque...

NB il faut faire référence à la library OUTLOOK avant ... (Microsoft Office 9.0 Object Library) (ou 10.0 zéro pour XP)

Sub SendEMailwithAttachments()
Dim ol As Object, myItem As Object
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.to = "Toto@toto.com"
myItem.Subject = "Test Mail"
myItem.Body = "Hello Word." & Chr(13) & Chr(13) & "Bye All"
Set myAttachments = myItem.Attachments
myAttachments.Add "C:\mes documents\Toto1.pdf"
myAttachments.Add "C:\mes documents\Toto1.xls"
MsgBox "Now sending to " & myItem.to
myItem.Send
Set ol = Nothing
End Sub



Bon App
@+Thierry
 
S

SVri

Guest
Merci Merci Mickael et Thierry (et aussi Valérie) !

J'ai maintenant tout ce qu'il me faut.

Vos 2 procédures tournent sans pb !

Faut juste rajouter un '.send' avant le 'End With' ds la proc. de Mickael (ne riez pas, j'ai cherché !).

A+

SVri
 
S

SVri

Guest
Encore une petite précision, SVP:

Peut-on aussi gérer l'adresse de réponse (pour que mes commerciaux répondent à leur asistante et pas à moi ;-)

Ca doit sûrement être un truc qui ressemble à:
myItem.replyrecipient ...

Merci ! et bon week-End !!
 
@

@+Thierry

Guest
Re Salut SVri

Euf non, ce que tu veux équivaudrait à masquer ton Email pour en mettre un autre ... Non je ne pense pas possible depuis VBA... Il faut des programmes spéciaux de mailing.

Et quelque part heureusement car sinon le apprentis Spammers ou Virus Providers pourraient s'amuser trop facilement...

Bon Week End
@+Thierry
 
S

SVri

Guest
En fait, il faut distinguer:
- Adresse de l'expéditeur
- et adresse de réponse

La modification de l'adresse de réponse fait partie des options ds Outlook, c'est pourquoi je pense qu'on peut y accéder ...

Sur ce, Re-bon week-end !!

SVri
 
D

dIDIER 2

Guest
bonjour
je me permet de m'insinuer dans votre discution car,
Je suis aussi interréssé par ces procedure d'envoie,
mais avec Netscape
en contournant MAPI (bloqué par d'autre tache pour un serveur réseau).
La seul soluce que j'ai trouvé c'est mailto avec une adresse email,
mais cela engendre une cascade de boite d'envoie Netscape.

Si quelqu'un a une soluce merci de transmetre sur ce fil

cordialement
Didier
 
@

@+Thierry

Guest
Hello Didier N°2

Bonsoir chez vous N°6.......... lol

Bon trève de plaisanterie..... Je suis 200%MS (job oblige) dons Netscape... Suis un peu Out....

SendMail prend n'importe quel client messagerie...... Ci-dessus c'est du 100% Office...... donc 100% MS... Donc Zat Iz Ze Kestion...... ? Envoyer des pièces jointes autre que le calssueur actif............par Excel sans utiliser MAPI (pour "Corser" un peu.. (Salut Pat !!))

J'ai regardé sur MPFE avec Array("SendMail" "Attachment" "NetScape")... c'est pire qu'un dimanche dans les parking d'un SuperMarché qui à fermé pour inventaire le samedi...

Pour le Fun j'ai trouvé çà !!! ===> pour STéphane....... hé hé hé

Rien n'est perdu sur le net........

Bon Wouik Hand !
@+Thierry
 
@

@+Thierry

Guest
Zut le lien pour STéphane...

ICI

si çà marche pas faites un copié collé...
http://groups.google.com/groups?q=sendmail+netscape+attachment+excel&start=10&hl=en&lr=&ie=UTF-8&selm=%23F6nYMep%24GA.193%40cppssbbsa04&rnum=11

@+Thierry
 
T

Ti

Guest
le problème reste entier de toute façon : si on n'a pas Outlook (ou si on ne veut pas l'utiliser) impossible d'envoyer une pièce jointe par Outlook Express qui refuse de la prendre, par sécurité. Et dans ce cas les macros fournies par Stéphane (avec @attachment=...) sont tout simplement ignorées. J'ai encore passé plusieurs heures la semaine dernière à explorer des pistes sur le Net pour envoyer une pièce attachée via Outlook Express, je n'ai trouvé de réponse nulle part.

J'explore une solution qui consiste passer par le raccourci SendTo Destinataire (qui se trouve dans le dossier SendTo) Le seul problème, c'est que je n'ai pas encore trouvé le moyen d'utiliser ce lien, qui semble ne fonctionner que sur un drag and drop (faites glisser un fichier quelconque sur le lien et il se retrouve immédiatement dans Outlook Express en pièce jointe). Pour l'instant je m'y suis cassé les dents, mais il m'est déjà arrivé de passer des mois sur un truc avant d'en venir à bout. De toute façon c'est possible : Excel le fait, Winzip le fait aussi. Il n'y a pas de raison qu'on ne puisse pas le faire, il suffit de trouver l'astuce.
 
G

GM

Guest
Bonsoir tout le forum


j'utilise cette macro pour envoyer une pièce jointe par Outlook Express qui le prend bien en compte, a vérifier avec Outlook cette procédure doit certainement pouvoir être amélioré a suivre.....


Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub Mail( _
eMail As String, _
Optional Subject As String, _
Optional Body As String)
Call ShellExecute(0&, "Open", "mailto:" + eMail + _
"?Subject=" + Subject + "&Body=" + Body, "", "", 1)
End Sub

Sub ExpedierMail()
Dim rng As Range
Dim sMail As String, sSubject As String
Dim sBody As String
Dim iRow As Integer, iCol As Integer
sMail = "simlger@noos.fr"
sSubject = "Données-Excel"
Set rng = Range("A1").CurrentRegion
For iCol = 1 To rng.Columns.Count
For iRow = 1 To rng.Rows.Count
sBody = sBody & rng.Cells(iRow, iCol) & " "
Next iRow
Next iCol
Call Mail(sMail, sSubject, sBody)
End Sub

Gérard
 

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 261
Membres
102 844
dernier inscrit
atori2