Code VBA pour envoi mail avec windows mail

Bonsoir le forum,

Je reviens vers vous après mille consultations de post qui n'ont pas répondu à mon besoin ou que je n'ai pas su adapter car je manque cruellement de compétences en la matière.

J'utilise Windows Mail et je veux envoyer une feuille de classeur (avec un bouton) vers des PC qui ont soit outlook soit outlook express (les 3 logiciels gérés dans notre entreprise). La feuille sera complétée par les différents interlocuteurs et renvoyée par mail avec le bouton.

J'ai trouvé un code qui me semblait convenir mais j'ai un message d'ereur "la valeur de configuration "SendUsing" est non valide" que je ne sais pas interpréter.

Je n'ai d'ailleurs pas tout compris du code.

Je vous joins la copie de mon classeur et vous remercie par avance de l'attention que vous porterez à ma demande.

bonne soirée

Bonjour Mano

Ton code utilises la méthode CDO (Collaboration Data Objects)

Un bon article à ce sujet, ici : http://www.rondebruin.nl/win/s1/cdo.htm

(pense à google translate)

A+

Bonsoir Bruno,

Merci pour ton attention.

Effectivement mon code utilise la méthode CDO mais ce n'est peut-être pas nécessaire?. J'ai paramétré mon document excel comme le post le disait : dans référence de outils, projet VBA, j'ai coché "Microsoft CDO for windows 2000 librairy" , mais je n'ai pas trop compris ce que j'ai fait.

A vrai dire, je suis un peu, beaucoup perdue avec ça.

J'ai consulté l'article que tu mentionnes mais ça ne m'éclaire pas davantage.

Bonne soirée,

Re,

Désolé, je manquais de temps, mais voici le code qui fonctionne

Private Sub CommandButton1_Click()
  Dim sPath As String, sFic As String
  Dim iMsg As Object
  Dim iConf As Object
  Dim strbody As String

  ' Définir le chemin d'enregistrement
  sPath = ThisWorkbook.Path & "\"
  ' Définir le nom du fichier
  sFic = "Toto.xls"
  ' Copier la feuille dans un nouveau classeur pour l'envoyer
  ActiveSheet.Copy
  ' Avec le classeur actif, enregistrer le fichier et le fermer
  With ActiveWorkbook
    Application.DisplayAlerts = False
    .SaveAs sPath & sFic, FileFormat:=xlExcel8  ' Valeur = 56
    .Close
    Application.DisplayAlerts = True
  End With
  ' Créer une instance CDO et une instance de configuration
  Set iMsg = CreateObject("CDO.Message")
  Set iConf = CreateObject("CDO.Configuration")
  '    iConf.Load -1    ' CDO Source Defaults
  Set Flds = iConf.Fields
  With Flds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    ' Serveur sortant, selon sa box
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Update
  End With
  ' Texte du corps de message
  strbody = "Texte dans le corps de message" & vbNewLine & vbNewLine & _
            "Ligne 2" & vbNewLine & _
            "Ligne 3" & vbNewLine

  With iMsg
    Set .Configuration = iConf
    .To = "adresse@mail.fr"
    .CC = ""
    .BCC = ""
    .From = "Mano"
    .Subject = "Exemple"
    .TextBody = strbody
    .AddAttachment sPath & sFic
    .Send
  End With
  Set iMsg = Nothing
  Set iConf = Nothing
  Kill sPath & sFic
End Sub

A+

Bonsoir,

Merci pour le code, Je viens de le tester.

La feuille "toto" est bien enregistrée, ça, ça marche. Par contre lorsque je lance la macro, j'ai un message d'erreur "le transport a échoué dans sa connexion au serveur".

Je suppose que cela vient du fait que je ne travaille pas via un serveur (je suis chez moi). Lorsque je le transposerai sur le fichier de mon PC au boulot, ça va marcher?

J'ai constaté que "Microsoft CDO for windows 2000 librairy" n'était plus coché dans la feuille enregistrée temporairement (toto). Comment faire pour que ça reste coché car ce document doit être complété et retourné par les différents services?

Cordialement,

Bonsoir Mano

mano a écrit :

La feuille "toto" est bien enregistrée, ça, ça marche. Par contre lorsque je lance la macro, j'ai un message d'erreur "le transport a échoué dans sa connexion au serveur".

Je suppose que cela vient du fait que je ne travaille pas via un serveur (je suis chez moi). Lorsque je le transposerai sur le fichier de mon PC au boulot, ça va marcher?

Non cela ne vient pas de là, bien au contraire, je pense que tu auras plus de problème à ton travail

En général au boulot nous sommes derrière des pare-feux qui ont tendance à refuser ce genre de connexion

As-tu changé le nom du serveur de messagerie sortant ?

J'ai un abonnement ADSL FREE, donc pour moi le serveur est : smtp.free.fr

mano a écrit :

J'ai constaté que "Microsoft CDO for windows 2000 librairy" n'était plus coché dans la feuille enregistrée temporairement (toto). Comment faire pour que ça reste coché car ce document doit être complété et retourné par les différents services?

C'est normal qu'il soit décoché, tu n'as pas besoin de cette référence !

Le code déclare l'objet CDO en Late Binding.

A+

Bonsoir Bruno,

Merci pour ton aide.

Effectivement, je n'avais pas changé le nom de ma box.

Maintenant ça marche très bien chez moi. Je l'ai installé au boulot et là, comme tu l'avais un peu prédit, ça ne marche pas pour l'instant. J'ai un message d'erreur "le serveur a rejeté l'adresse de l'expéditeur. La réponse du serveur était 550.........", pourtant l'adresse de l'expéditeur est bien la bonne, je ne sais pas.

Bonne soirée,

Re,

Ce que je ne comprends pas, c'est que si ce que tu fais est pour ton boulot,

normalement vous devez utiliser Outlook, comme dans beaucoup de société, non !?

Si c'est le cas, tu est parti dans une bien mauvaise direction

A+

Bonjour,

Nous sommes une petite structure et utilisons Outlook, outlook express et windows mail.

Bonne journée,

Re,

Oui c vrai tu l'avais précisé dans le 1er post, un lien qui pourrait t'intéresser

A+

Bonsoir,

Je crois que ça va être compliqué de mettre cette macro en place dans ma boîte. J'ai testé sur plusieurs PC aujourd'hui et j'ai différentes erreurs (jamais les mêmes); certains ne veulent même pas copier le fichier temporaire.

J'ai lu le lien que tu m'avais mis, il s'agit peut-être d'un problème de droits d'accès. Je vais voir l'administrateur qui gère notre informatique, il m'expliquera ce qui est sécurisé.

Je ne connais pas grand chose, mais lorsque j'ouvre ma boîte mail, je n'ai pas à rentrer de code, mes messages s'affichent directs. Je sais aussi que les spams sont filtrés.

Si tu as d'autres infos, je prends.

Je suis d'une région de France ou nous fabriquons de très bons chocolats d'une marque très renommée et à un mois de Noêl, je t'envoie un wagon de papillottes virtuelles pour te remercier de ta disponibilité.

A+

Rechercher des sujets similaires à "code vba envoi mail windows"