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

VBA Access Discussion :

Executer commande sendmailCDO [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut Executer commande sendmailCDO
    Bonjour à tous,
    Je galère pour l'envoi auto d'un mail dans une appli access.
    J'ai créé un module de classe dans lequel j'ai copié le code suivant :

    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
    Function SendMailCDO(expediteur As String, destinataire As String, _
     objetmessage As String, corpsmessage As String, Optional piecejointe As String)
     
    Dim Cdo_Message As New CDO.Message
    Set Cdo_Message.Configuration = GetSMTPServerConfig()
     
    With Cdo_Message
        .To = destinataire
        .From = expediteur
        .Subject = objetmessage
        .TextBody = corpsmessage
        .AddAttachment (piecejointe)
        .Send
    End With
     
    Set Cdo_Message = Nothing
     
    End Function
    Function GetSMTPServerConfig() As Object
    Dim Cdo_Config As New CDO.Configuration
    Dim Cdo_Fields As Object
    Set Cdo_Fields = Cdo_Config.Fields
     
    With Cdo_Fields
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    .Item(cdoSMTPServer) = "smtp.xxxxxxxx.fr"
    .Item(cdoSMTPServerPort) = 25
    .Update
    End With
     
    Set GetSMTPServerConfig = Cdo_Config
    Set Cdo_Config = Nothing
    Set Cdo_Fields = Nothing
     
    End Function
    Je ne comprend pas comment lancer la commande "call sendmailCDO(....."
    Lorsque je l'affecte à un bouton sur la commande click() dans un formulaire, j'ai un message "erreur de compilation : sub ou fonction non défine"
    Voilà des heures et des heures que je galère...
    Vous l'avez bien compris je pense, je ne maitrise pas vraiment le VBA !!
    Merci à tous pour votre aide !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as crée une fonction (function), il faut une routine (sub).

    Philippe

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Merci Philippe pour ton aide.
    J'ai appliqué ta solution mais maintenant j'ai un message d'erreur sur la ligne de code .send de la fonction sendmailCDO()
    Voici l'intégralité de mon code pour info :

    le lancement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande61_Click()
    Call SendMailCDO("xxxxx@xxx.fr", "yyyyyy@yyyy.fr", "STOCK BAG", "RAS", , "c:\applications\STOCK_bagbig.txt")
    End Sub
    la fonction sendmailCDO() :
    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
    Function SendMailCDO(Sender As String, Receiver As String, _
    Subject As String, BodyText As String, _
    Optional Cc As String, Optional Bcc As String)
     
    Dim Cdo_Message As New CDO.Message
     
    Set Cdo_Message.Configuration = GetSMTPServerConfig()
     
     
    With Cdo_Message
     
    .To = Receiver
     
    .From = Sender
     
    .Subject = Subject
     
    .Cc = Cc
     
    .Bcc = Bcc
     
    .TextBody = BodyText
     
    .Send
     
    End With
     
     
    Set Cdo_Message = Nothing
     
    End Function
    et enfin la fonction etSMTPServerConfig() :
    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
    Function GetSMTPServerConfig() As Object
     
    Dim Cdo_Config As New CDO.Configuration
     
    Dim Cdo_Fields As Object
     
    Set Cdo_Fields = Cdo_Config.Fields
     
     
    With Cdo_Fields
     
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
     
    .Item(cdoSMTPServer) = "smtp.orange.fr"
     
    .Item(cdoSMTPServerPort) = 25
     
    .Update
     
    End With
     
     
    Set GetSMTPServerConfig = Cdo_Config
     
    Set Cdo_Config = Nothing
     
    Set Cdo_Fields = Nothing
     
    End Function
    Peux-tu m'expliquer pourquoi j'ai cette erreur (copie ecran en piece jointe)
    Images attachées Images attachées  

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Philippe,
    Infos complémentaires,
    J'ai trouvé un info qui m'évite cette erreur :
    il suffit de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Cdo_Fields
     
    .Item(cdoSendUsingMethod) = cdoSendUsingPort
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Cdo_Fields
     
    .Item(cdoSendUsingMethod) = cdoSendUsingPickup
    Mais maintenant j'ai une erreur 8040222 : le chemin d'acces du repertoire est requis !!!

    Merci pour ton aide.

    Peut-être as-tu une autre méthode d'envoie de mail à me proposer ?

    @+
    Vince

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Si ton serveur smtp est chez Orange ou un autre Fai, il ne faut pas prendre l'option "cdoSendUsingPickup".
    Si tu choisis cette option c'est que tu as ton serveur en local et il t'en demande le chemin.

    D'autre part ta fonction SendMailCdo a comme dernier argument en option"Bcc" et dans l'appel tu mets le chemin d'un pièce jointe.

    Il faut voir aussi si ton compte nécessite une authentification.
    Regardes la configuration de ta messagerie.
    Dernière modification par Invité ; 27/10/2011 à 16h02.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 58
    Par défaut
    Merci Jean-Damien pour tes commentaires très pertinents !!
    Bon je "revise ma copie"... et reviens vers vous après modifs.
    Merci pour votre aide précieuse !
    Vince

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

Discussions similaires

  1. [ fichier.bat ] executer commande
    Par hocinema dans le forum Windows
    Réponses: 1
    Dernier message: 15/06/2006, 19h44
  2. Réponses: 1
    Dernier message: 15/03/2006, 10h29
  3. [Système] Problème d'execution commande
    Par MightyDucks dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2006, 12h25
  4. [Système][Dos] Execution commandes DOS
    Par Machjaghjolu dans le forum API standards et tierces
    Réponses: 18
    Dernier message: 02/01/2006, 21h59
  5. Réponses: 9
    Dernier message: 04/09/2004, 19h15

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