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 :

CreateObject


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1
    Par défaut CreateObject
    Bonjour à tous,

    Je suis débutant...

    J'ai eu le même problème concernant l'envoi d'email via VBA.

    Message d'erreur "Un composant ActiveX ne peut pas créer d’objet".

    Au niveau de l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MonOutlook = CreateObject("Outlook.Application")
    J'ai lu les FAQ sur le sujet et j'ai ajouté Server.

    Tel que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set MonOutlook = Server.CreateObject("Outlook.Application")
    Message d'erreur : variable non définie.

    Rq : je dispose de access 2003...

    NB : je souhaite envoyer des e-mail à partir d'une variable nommée mail_agent de la table alta. Et à chaque agent, lui envoyer l'information le concernant à partir des champs annonce, num_siret...

    Voici mon 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Option Compare Database
     
     
     
    Option Explicit
     
    Sub Envoicourriel()
    '********************************
    '*initialisation de l'accès DAO
    '********************************
     
        Dim ListeComplete As String
        Dim ListeEMail As Recordset
     
        'Requête qui cherche les 50 premiers résultats :
        Set ListeEMail = CurrentDb.OpenRecordset("SELECT mail_agent from alta;")
     
        'boucle qui récupère les adresses mail de chaque résultat :
        ListeEMail.MoveFirst
        ListeComplete = " "
     
        'Parcours de la requête :
        While Not ListeEMail.EOF
            ListeComplete = ListeComplete & ListeEMail("mail_agent") & " ; "
            ListeEMail.MoveNext
        Wend
     
        'ici on retire le dernier point_virgule de la liste
        ListeComplete = Left(ListeComplete, Len(ListeComplete) - 2)
     
        'fermeture de la requête
        ListeEMail.Close
        Set ListeEMail = Nothing
     
     
    '********************************
    '*Envoi de L'email avec Outlook
    '********************************
     
        Dim MonOutlook As Object
        Dim MonMessage As Object
        Dim Corps As String
     
          ' On crée une instance d'Outlook :
          Set MonOutlook = CreateObject("Outlook.Application")
     
          ' Et on crée un élément Outlook, qui sera un message E-Mail :
          Set MonMessage = MonOutlook.CreateItem(0)
          Set MonOutlook = Nothing
     
     
         'on crée une instance d'Outlook :
        Set MonOutlook = CreateObject("Outlook.Application")
     
        'et on crée un élément Outlook, qui sera un message EMail :
       Set MonMessage = MonOutlook.CreateItem(0)
     
        'préparation du message
        MonMessage.To = "youss@banque.fr"
     
        MonMessage.BCC = ListeComplete
        MonMessage.Subject = "Renouvellement de votre abonnement"
        Corps = "D'après nos dossiers, l'entreprise " & ("num_siret") & " a connu des changements"
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & "blaaaaaaaaaaaaaaaaaaablaaaaaaaaaaaaaaaaaaa"
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & "blaaaaaaaaaaaaaaaaaaablaaaaaaaaaaaaaaaaaaaaaaaaa"
        MonMessage.Body = Corps & "<hr>" & "</div></body></html>"
     
        'on envoi le message
        MonMessage.Send
     
        'on ferme Outlook
        'Set MonOutlook = Nothing
     
    End Sub


    Je vous remercie par avance.

    you'ss

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Par défaut
    Question bête mais as-tu ajouté la référence qui va bien dans le VBE ?

    Quand tu es dans le VBE (là où tu écris ton code), vas dans Outils/Références et tu coches la référence "Microsoft Outlook X.X Object Library"

    X.X représentant la version qui est installée sur ton poste.

    Je pense que le problème peut venir de là.

    Sinon, perso, je préfère déclarer mes variables comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Dim MonOutlook As Outlook.Application
        Dim MonMessage As Outlook.MailItem

  3. #3
    Membre émérite
    Homme Profil pro
    Regisseur
    Inscrit en
    Octobre 2006
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Par défaut
    Bonsoir le forum
    paidge ,dans ta sub ,à la ligne 45 tu ecris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      ' On crée une instance d'Outlook :
          Set MonOutlook = CreateObject("Outlook.Application")
     
          ' Et on crée un élément Outlook, qui sera un message E-Mail :
          Set MonMessage = MonOutlook.CreateItem(0)
          Set MonOutlook = Nothing
     
     
         'on crée une instance d'Outlook :
        Set MonOutlook = CreateObject("Outlook.Application")
     
        'et on crée un élément Outlook, qui sera un message EMail :
       Set MonMessage = MonOutlook.CreateItem(0)
    A la ligne 47 ,tu vide une variable objet ,,puis ligne 53
    tu la réouvre !!
    Ensuite avec MonMessage ,utilise un bloc with :
    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
    MonMessage.To = "youss@banque.fr"
    with MonMessage 
        .BCC = ListeComplete
        .Subject = "Renouvellement de votre abonnement"
        Corps = "D'après nos dossiers, l'entreprise " & ("num_siret") & " a connu des changements"
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & "blaaaaaaaaaaaaaaaaaaablaaaaaaaaaaaaaaaaaaa"
        Corps = Corps & Chr(13) & Chr(10)
        Corps = Corps & "blaaaaaaaaaaaaaaaaaaablaaaaaaaaaaaaaaaaaaaaaaaaa"
       .Body = Corps & "<hr>" & "</div></body></html>"
     
        'on envoi le message
        MonMessage.Send
    End With
    Et cela serait mieux de faire 2 sub .L'une traitant le recordset et appelant l'autre ,avec 4 arguments (To,Body,Bcc,Subject) .
    Cdlt

Discussions similaires

  1. Server.CreateObject
    Par joecool2005 dans le forum ASP
    Réponses: 3
    Dernier message: 23/03/2006, 14h22
  2. Réponses: 8
    Dernier message: 13/12/2005, 00h01
  3. multiple instanciation de Server.CreateObject
    Par michelsylv dans le forum ASP
    Réponses: 2
    Dernier message: 26/04/2005, 11h10
  4. Aide : Server.CreateObject("Microsoft.XMLHTTP")
    Par roots_man dans le forum ASP
    Réponses: 2
    Dernier message: 13/01/2005, 09h24

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