Code VBA - Envoi d'un fichier par courriel

Bonjour,

J'avais reçu sur ce Forum un code qui permettait d'envoyer un fichier Excel par courriel, directement depuis le fichier lui-même ; ça fonctionnait bien sur un autre ordinateur.

J'essaie actuellement d'envoyer ce fichier - ci-joint - depuis un autre ordinateur sur lequel je n'ai pas Outlook, mais Windows Live Mail 2011.

Pouvez-vous m'aider à transformer ce code afin qu'il fonctionne à nouveau ?

Cordialement

306essai.zip (12.49 Ko)

Bonsoir,

Voir ici une page du renommé Ron de Bruin.

http://www.rondebruin.nl/sendmail.htm

Merci beaucoup pour l'information. Je vais essayer de m'en sortir ainsi

Bonne journée.

Re,

J'ai consulté les pages de Ron de Bruin que tu m'as conseillées et j'ai trouvé des trucs vraiment très intéressants. Encore une fois merci pour ton conseil.

Je ne suis toutefois pas arrivé à trouver une solution à mon problème premier ; soit envoyer un fichier Excel par Windows Live Mail 2011 à une série non exhaustive d'adresses électroniques inscrites directement dans le fichier.

Qui peut encore m'aider ?

Salut le forum

Essaye cette procédure

Sub MailAvecOEouWinMail()
Dim WshShell As Object
Dim Dest As String
Dim Sujt As String
Dim Msg As String
Dim MailProg As String
Dim Env As String, Pos As Integer

Set WshShell = CreateObject("WScript.Shell")
MailProg = WshShell.RegRead _
("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msimn.exe\")
Set WshShell = Nothing
Pos = InStrRev(MailProg, "%")
If Pos > 0 Then
Env = Environ(Mid(MailProg, 2, Pos - 2))
MailProg = Mid(MailProg, Pos + 1)
End If

Dest = ""
Sujt = "Test d'envoi avec Excel"
Msg = "Bonjour, Excel vous envoie un message avec " & _
IIf(InStr(MailProg, "msimn") > 0, "OE", "WinMail")
Shell Env & MailProg & " /mailurl:mailto:" & Dest & "?subject=" & _
Sujt & "&Body=" & Msg
End Sub

Mytå

Salut Mytå et merci pour tes conseils.

J'ai essayé ton code, mais il bloque à cet endroit :

capture 01 11

Sur un tuto, il y est indiqué de cocher la référence "Microsoft CDO for Exchange xxxx Library", mais celle-ci n'est pas à disposition (et elle n'est pas non plus déjà cochée) dans la liste des références, selon l'image ci-dessous. Est-ce que ça vient du fait qu'il faudrait la chercher - comme indiqué - dans VBE alors que je cherche dans VBA ??

capture 01 11 bis

J'ai également essayé le code "Pour [envoyer] le classeur complet", sans cette "Référence", mais ça bloque également sur .send (visible ci-dessous).

capture 01 11 ter

Ai-je raison de croire qu'il y a quand même une solution ?

Cordialement.

Re le forum

Yvouille, le premier code fourni fonctionne très bien.

Testé sous Windows Vista avec Excel 2003 et Excel 2007

Mytå

Salut Mytå,

Merci pour ta réponse. Je veux bien te croire, lorsque tu me dis que ton code fonctionne chez toi. J'espère alors que tu me croies lorsque j'avance qu'il ne fonctionne pas chez moi (l'image fournie n'est pas un trucage ).

Bonnes salutations.

Re le forum

Yvouille, il faudrait voir ce que contiennent les variables (MailProg et Pos).

Mid, fonction

Renvoie une valeur de type Variant (String) contenant un nombre indiqué de caractères extraits d'une chaîne de caractères.

Mytå

Bonsoir,

Effectivement, le code fourni par Mytå fonctionne...

Et le bug provoqué chez toi semble provenir d'une référence manquante, sans raison aucune, Mid étant une fonction native de VBA.

Pour cela, regarde dans "Outils/Références", et décoche tout ce qui est "MANQUANT"...

Bonne soirée

Salut Mytå , Salut Cousinhub,

Merci à tous deux pour votre aide.

Mytå, lorsque ton code bloque sur Env = Environ(Mid(MailProg, 2, Pos - 2)), je n'ai encore aucune indication à propos des variables.

Cousinhub, après que j'ai décoché la seule ligne "MANQUANT" ......

capture 03 11

......... le code bloque sur la ligne :

capture 03 11 bis

Que puis-je essayer d'autre ?

Cordialement.

Re le forum

Yvouille, une nouvelle tentative en ouvrant directement Windows Mail

 Dim Dest As String
 Dim Sujt As String
 Dim Msg As String

 Dest = "coucou@monfai.fr"
 Sujt = "Test d'envoi avec Excel"
 Msg = "Bonjour, Excel vous envoie un message avec "

  Shell Environ("ProgramFiles") & "\Windows Mail\WinMail.exe " & _
  "/mailurl:mailto:" & Dest & "? subject=" & Sujt & "&Body=" & Msg & "WinMail"

Mytå

Re le forum

Yvouille, abandon du sujet ... ou tu n'as pas vu ma dernière proposition. (Un petit UP)

A te relire

Mytå

Salut Mytå,

Je n'ai juste pas encore eu le temps d'effectuer de nouveaux essais.

Je reviendrai à la charge prochainement.

Cordialement

Re,

Comme je ne sais pas exactement s'il faut placer ton dernier code à l'intérieur d'un autre ou non, je l'ai essayé pour lui-même et il ne se passe rien.

De toute façon, j'ai l'impression qu'on ne s'est jamais vraiment approché de ma demande initiale qui était d'utiliser une liste d'adresses inscrites sur une feuille du fichier lui-même.

Tout ceci à l'air bien compliqué ; pour moi on pourrait éventuellement laisser tomber.

Cordialement.

Re le forum

Yvouille, ta demande initiale parlait de Windows Mail, il faut bien commencer par le faire fonctionner.

Yvouille a écrit :

J'essaie actuellement d'envoyer ce fichier - ci-joint - depuis un autre ordinateur sur lequel je n'ai pas Outlook, mais Windows Live Mail

Mytå

RE,

Si ça pouvait fonctionner, je serais quand même toujours preneur.

Re le forum

Tu peux tester cette autre procédure : Send Worksheets to One or More People by E-mail

Mytå

Wow, ce site est très intéressant et j'y ai trouvé plusieurs bonnes choses ; même si je ne suis pas arrivé à retrouver tous les avantages du code de Dan, ça me convient bien.

Il y a juste deux petits inconvénients : lors de l'envoi, le programme de messagerie demande une confirmation que l'on veut bien envoyer un message par l'intermédiaire d'Excel et, lorsque l'on ouvre le fichier reçu, ça indique qu'il est dans un format Excel "bizarre" et il faut confirmer que l'on est d'accord de l'ouvrir quand même.

Encore une fois merci Mytå pour ton aide et à la prochaine.

Bonnes salutations.

Rechercher des sujets similaires à "code vba envoi fichier courriel"