IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Envoi d'un mail sans outlook [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut Envoi d'un mail sans outlook
    Bonjour à tous,

    Je suis sur un server de traitement, je dispose d'un fichier xlsm lié à 4 bases Access c-à-d j'ai 4 tables access qui apparaissent dans 4 feuilles distinctes de mon classeur et toute modification sur ces tables access agit sur les tables liées dans Excel.
    Mon but est d'envoyer par mail ce fichier excel (en pièce jointe) à un certains nombres destiinataire, sur la FAQ je suis tombé sur un code que légèrement modifié, au finish j'ai l'erreur '1004'


    Voici le code utilisé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
     
    Sub Tst_Wb()
    Dim SourceWb As Workbook
    Dim CdoMessage As Object
    Dim Fichier As String
     
        Set SourceWb = ActiveWorkbook
        Fichier = ThisWorkbook.Path & Application.PathSeparator & "monfichier.xlsm"
        
        SourceWb.SaveCopyAs Fichier
     
        Set CdoMessage = CreateObject("CDO.Message")
        With CdoMessage
            .Subject = "Essai"
            .From = "papaye@yahoo.fr"
            .To = "mandarine2001@yahoo.fr; maman@gmail.com;oncle@laposte.fr"
            .CC = ""
            .BCC = ""
            .TextBody = "Teste pour voir "
            .AddAttachment Fichier
            .Send
        End With
        
        Set CdoMessage = Nothing
        'Kill Fichier
    End Sub

    L'erreur se produit au niveau de la ligne en rouge.

    Merci d'avance pour votre aide.
    Cordialement,


    Kedmard

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut Kedmard

    Le seul problème que je vois est celui du chemin de sauvegarde

    Mets un point d'arrêt (F9) sur ta ligne en rouge et vérifie lors de l'exécution que le chemin soit correcte

    En tout cas le code comme il est fonctionne chez moi

    A+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour BrunoM45,

    D'abord merci pour l'intérêt que tu portes à mon problème.
    J'ai mis un point d'arrêt sur la ligne rouge comme tu me la suggéré mais j'ai toujours le même erreur.
    Je pense évidemment que le chemin d'enregistrement pose un problème, t'aurais pas une idée sur une autre possibilité de préciser le chemin d'enregistrement afin que je change ces 2 lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = ThisWorkbook.Path & Application.PathSeparator & "monfichier.xlsm"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SourceWb.SaveCopyAs Fichier
    Merci.

    Bonne fin de journée.

    Kedmard

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut

    Je viens seulement de m'apercevoir que tu utilises l'instruction "SaveCopyAs" et non "SaveAs"

    Ce qui est totalement différend au niveau du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub test()
      Dim sPath As String, sFichier As String
      Dim SourceWb As Workbook
      '
      ' Définir les variables
      sPath = ThisWorkbook.Path & "\"
      sFichier = "NomFichier.xlsm"
      '
      ' Sauvegarde une copie sous un certain nom
      ' le répertoire est celui du classeur source
      SourceWb.SaveCopyAs sFichier
      '
      ' Sauvegarde sous : dans le répertoire souhaité
      SourceWb.SaveAs sPath & sFichier
    End Sub
    J'espère avoir été assez clair

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut BrunoM45,

    Voici mon nouveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Test()
    Dim SourceWb As Workbook
    Dim CdoMessage As Object
    Dim sPath As String, sFichier As String
    'Dim Fichier As String
    Set SourceWb = ActiveWorkbook
      sPath = ThisWorkbook.Path & "\"
      sFichier = "monfichier.xlsm"
     
      SourceWb.SaveCopyAs sFichier
     
     SourceWb.SaveAs sPath & sFichier
     
        Set CdoMessage = CreateObject("CDO.Message")
        With CdoMessage
            .Subject = "Essai"
            .From = "papa2001@yahoo.fr"
            .To = "maman2001@gmail.com "
            .CC = ""
            .BCC = ""
            .TextBody = "Teste pour voir "
            .AddAttachment sFichier
            .Send
        End With
     
        Set CdoMessage = Nothing
        End Sub

    J-ai l'erreur d'exécution :
    Le protocole utilisé est inconnu.
    sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .AddAttachment sFichier

    Ai-je omis un détail?

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à consulter

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour kiki29 et merci pour ton lien.

    J'ai essayé le code de ton lien précisant l'adresse SMPT de mon fourniseur internet (et retirant tout ce qui est en commentaire sur ton code) , j'ai au finish j'ai une erreur sur la ligne .send:

    Le message n'a pas pu être envoyer vers le serveur SMPT.Le code d'erreur de transport était...
    Un autre souci quand j'ajoute .Attachments.Add ActiveWorkbook.FullName juste avant le .send (puisque je souhaite envoyer pas seulement un message mais aussi mon fichier en PJ) j'ai le message d'erreur:

    Incompatibilité de type

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Kiki29
    Bonjour Kedmard

    Après test, voici le code à utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub Test()
      Dim SourceWb As Workbook
      Dim sPath As String, sFichier As String
      Dim iMsg As Object, iConf As Object
      Dim Flds As Variant
      Dim strbody As String
      ' Définir le chemin et le nom du fichier
      sPath = ThisWorkbook.Path & "\"
      sFichier = "monfichier.xlsm"
      ' Définir le classeur source
      Set SourceWb = ActiveWorkbook
      ' Sauvegarder le fichier dans le dossier définit avec le nom définit
      SourceWb.SaveAs sPath & sFichier
      ' IMPORTANT ! Fermer le fichier sinon erreur lors de l'envois
      SourceWb.Close
      '
      ' Configurer l'envois
      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
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.free.fr"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update
      End With
      ' Création du texte du message
      strbody = "Ceci est un message" & vbNewLine & vbNewLine & _
                "This is line 1" & vbNewLine & _
                "This is line 2" & vbNewLine & _
                "This is line 3" & vbNewLine & _
                "This is line 4"
     
      With iMsg
        Set .Configuration = iConf
        .Subject = "Essai"
        .From = "papa2001@yahoo.fr"
        .To = "maman2001@gmail.com"
        .CC = ""
        .BCC = ""
        .TextBody = strbody
        .AddAttachment sPath & sFichier
        .Send
      End With
    End Sub
    A+

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour Kiki29 , Bonjour BrunoM45,

    Désolé pour cette réponse tardive, je n'ai plus aucun message d'erreur mais lorsque j'éxécute mon code je n'ai rien dans la boîte mail du estinaire ni le message ni la pièce jointe.
    N y at-il pas un détail manquant?

    Merci.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Salut Kedmard

    Question peut-être idiote, mais ...

    As-tu bien changé l'adesse mail dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .To = "maman2001@gmail.com"
    A+

  11. #11
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu...
    bonjour

    je n'en suis pas sur mais

    manque t-il-pas un separateur ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SourceWb.SaveAs sPath & sFichier

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  12. #12
    Invité
    Invité(e)
    Par défaut
    Salut Patricktoulon

    Non le séparateur est définit au début du code dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sPath = ThisWorkbook.Path & "\"
    Le problème n'est pas là

    En tout cas j'ai testé chez moi, car pas de proxy, et ça fonctionne parfaitement

    Au plaisir

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Salut messieurs,

    Bruno tu l'as essayé avec quel type de fichier Excel?
    Moi je pense que le souci peut se trouver:
    Soit sur mon type de fichier (xlsm)
    Soit sur mon adresse smpt
    soit sur le fait que je travail sur un lecteur réseau
    chui pas sûr mais je le suspecte

    Mes adresses mails ont bien été modifpées.

    Merci quand même.

    Bonne soirée.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Salut Kedmard
    Citation Envoyé par kedmard Voir le message
    Salut messieurs,
    Bruno tu l'as essayé avec quel type de fichier Excel?
    Bien évidemment 2 classeurs Excel 2010 avec extension ".xlsm"
    Le 2ème servant de classeur source

    Moi je pense que le souci peut se trouver:
    Soit sur mon type de fichier (xlsm)
    Non car j'ai testé
    Soit sur mon adresse smpt
    Plutôt oui

    soit sur le fait que je travail sur un lecteur réseau
    Non rien à voir

    Mes adresses mails ont bien été modifiées
    Ok

    Tu nous dis lecteur réseau ... es-tu en réseau d'entreprise ?
    Si oui, c'est certainement là qu'est le problème, tu passes forcément par un proxy et tous les firewall

    A+

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Bonjour à tous,

    Bruno, je suis effectivement sur un réseau d'entreprise.

    tu passes forcément par un proxy et tous les firewall
    pourrai-tu me dire un peu plus sur ces Proxy et firewall?


    Dans ce cas quelle serait la solution?

    J'ai fait vérifier mon adresse smpt il ok


    A+

  16. #16
    Invité
    Invité(e)
    Par défaut
    Re,

    Si tu es en réseau d'entreprise, tu as je pense une messagerie
    Et il y a de forte chance que ce soit Outlook avec un serveur Exchange !?

    Si tel est bien le cas, alors pourquoi vouloir passer par CDO ?

    Un proxy fait partie de la sécurité d'un réseau, tout comme le firewall (pare-feu)
    cela évite en partie et autant que possible les intrusions

    A+

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 253
    Points : 90
    Points
    90
    Par défaut
    Le serveur sur lequel se trouve mon fichier ne contient pas d'outlook d'où mon choix pour CDO, d'après ce qu'on m'a dit c'est en fait un serveur dit de "taitement" qui nous permet de planifier certaines tâches en vue de les envoyer en temps voulu à des tierces de l'entreprise.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Re,

    Si ce n'est pas un Terminal Serveur, à savoir que les logiciels de la suite office ne sont pas installés dessus, mais sur chaque poste.

    Lorsque tu lances la macro, celle-ci est liée au poste sur lequel elle est lancée
    Donc si sur ton poste tu as Outlook, tu peux l'utiliser

    Je te parle de ça, car je ne connais pas de méthode pour utiliser CDO via un proxy (besoin d'authentification)

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Envoi e-mail sans Outlook
    Par PAUL87 dans le forum VBA Access
    Réponses: 9
    Dernier message: 03/10/2013, 22h59
  2. [AC-2003] Envoie de mail sans outlook
    Par deejaygalut dans le forum IHM
    Réponses: 1
    Dernier message: 26/06/2010, 15h27
  3. Est il possible de faire du mailing sans outlook
    Par AlexFred dans le forum VBA Access
    Réponses: 7
    Dernier message: 11/07/2007, 12h52
  4. envois d'un mail avec outlook express en vb
    Par trefles dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/01/2006, 18h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo