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 :

Message erreur lors de la création d'un mail [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut Message erreur lors de la création d'un mail
    Bonjour tout le monde,

    J'ai un message d'erreur qui apparaît et je recherche quel complément de librairie je dois activer

    J'ai testé plusieurs code pris dans les discussions qui fonctionne et je n'ai pas trouvé de tuto sur générer un mail vers outlook.

    Le plus intéressant m'a paru être celui ci :

    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
    Function EnvoiMailSimple()
      ' Création d'une variable de type E-Mail :
      Dim Email As Outlook.Application
      Dim EmailMsg As Outlook.MailItem
      Dim Dest As Outlook.Recipient
      'Dim col As Variant
     
     
    '.......
     
    Set Email = CreateObject("Outlook.Application")
    Set EmailMsg = Email.CreateItem(olMailItem)
    Set myOlApp = CreateObject("Outlook.Application")
    Set myItem = myOlApp.CreateItem(olMailItem)
     
    ChDir ("D:\Documents and Settings\MELOUARIACHI\Mes documents\reporting\")
    chem = CurDir
    chemin = chem & "\" & Nfichier
    Set Email = CreateObject("Outlook.Application")
    Set EmailMsg = Email.CreateItem(olMailItem)
    ' Création de l'e-mail : Titre, Corps du message, destinataire
    For i = 2 To li
     Set Dest = EmailMsg.Recipients.Add(Cells(i, col).Value)
    Next
     
     EmailMsg.Subject = domaine & ":  Demandes enregistrées dans Remedy RS3 au " & datereport
     EmailMsg.Body = "Madame, Monsieur " & Chr$(13) & Chr$(13) & "Je vous prie de trouver ci-joint la liste des demandes enregistrées par l'ECU au " & datereport & ". Cela vous permettra de faire un point sur les tickets qui sont affectés à votre domaine." & Chr$(13) & "Cdt Groupe ECU"
     EmailMsg.Attachments.Add chemin
     EmailMsg.CC = "bruno.beaulieu@atosorigin.com" '; <a href="mailto:eddie.lechevretel@atosorigin.com">eddie.lechevretel@atosorigin.com</a> "
     
    ' Placement de l'e-mail dans la boîte d'envoi :
     EmailMsg.Send
     
     
     'EmailMsg.Attachments
    Set EmailMsg = Nothing
    Set Email = Nothing
    End Function
    Dans les autres codes j'ai un message d'erreur sur la ligne qui génère le mail mais sur celui ci le message d'erreur est sur la ligne 11 "set email..."

    le message est "erreur 429 - un composant active x ne peut pas créer d'objet"

    J'ai activé dans outils/Références vba project plusieurs bibliothèque pour outlook mais apparement il en manque !!!!

    Avez vous une idée ? ou le problème vient il d'ailleurs ?

    Merci pour votre aide

  2. #2
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut
    bonsoir

    Je réessaye une dernière fois car je ne trouve pas la solution !!!

    J'ai placé ce code en essai :
    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
        'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
        ' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
        Sub Envoyer_Mail_Outlook()
        Dim ObjOutlook As New Outlook.Application
        Dim oBjMail
        Dim Nom_Fichier As String
     
            Set ObjOutlook = New Outlook.Application
            Set oBjMail = ObjOutlook.CreateItem(olMailItem)
        '---------------------------------------------------------
           'Exemple pour envoyer un classeur en pièce jointe
           'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
           'If Nom_Fichier = "Faux" Then Exit Sub
        '---------------------------------------------------------
           'Ou bien entrer le path et nom du fichier autrement
           Nom_Fichier = "C:\Chemin\NomFichier.ext"
            If Nom_Fichier = "" Then Exit Sub
        '---------------------------------------------------------
             With oBjMail
                .To = "LeClient@gmail.com" ' le destinataire
               .Subject = "Ici c'est l'objet"          ' l'objet du mail
               .Body = "Ici le texte du mail "  'le corps du mail ..son contenu
               .Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
               .Display  '   Ici on peut supprimer pour l'envoyer sans vérification
               .Send
            End With
            ObjOutlook.Quit
            Set oBjMail = Nothing
            Set ObjOutlook = Nothing
        End Sub
    et j'obtiens toujours le message d'erreur 429 "un controle active x ne peut pas créer d'objet"

    Avez vous une idée ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Corrige ton code comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim ObjOutlook As Object, oBjMail As Object
        Dim Nom_Fichier As String
     
        Set ObjOutlook = CreateObject("Outlook.Application")
        Set oBjMail = ObjOutlook.CreateItem(0)
    N'oulie pas le et bonne continuation

  4. #4
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut
    Bonsoir et merci pour l'aide

    Mais le problème persiste avec le même message sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ObjOutlook = CreateObject("Outlook.Application")

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut heu
    Bonjour
    encore une erreur de debutant
    confusion latebinding et early binding

    j'ai mis en gros ton erreur dans ton code

    mais avant parlons du late binding

    quand tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set machin=create("trucmuche.application ")
    machin est forcement un object au depart
    c'est du late binding(déclaration tardive) ce qui t'abstiens d'activer une référence
    mais ton souci c'est que tu cherche a le créer 2 fois avec la même variable donc
    l'ors de la deuxième tentative email n'est plus un Object(vide ) mais bel et bien une instance de l'application d'où le message d'erreur (un composant ne peut pas .creer........)

    tu vois ce qu'il te reste a faire !!?
    ton code avec l'erreur en surgras
    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
    
    Set Email = CreateObject("Outlook.Application")' a partir de la email est une instance de outlook
    Set EmailMsg = Email.CreateItem(olMailItem)
    Set myOlApp = CreateObject("Outlook.Application")'celle la elle sert a quoi,
    Set myItem = myOlApp.CreateItem(olMailItem)
     
    ChDir ("D:\Documents and Settings\MELOUARIACHI\Mes documents\reporting\")
    chem = CurDir
    chemin = chem & "\" & Nfichier
    Set Email = CreateObject("Outlook.Application")'peut pas fonctionner email est déjà une instance de outlook
    Set EmailMsg = Email.CreateItem(olMailItem)
    ' Création de l'e-mail : Titre, Corps du message, destinataire
    For i = 2 To li
     Set Dest = EmailMsg.Recipients.Add(Cells(i, col).Value)
    Next
     
     EmailMsg.Subject = domaine & ":  Demandes enregistrées dans Remedy RS3 au " & datereport
     EmailMsg.Body = "Madame, Monsieur " & Chr$(13) & Chr$(13) & "Je vous prie de trouver ci-joint la liste des demandes enregistrées par l'ECU au " & datereport & ". Cela vous permettra de faire un point sur les tickets qui sont affectés à votre domaine." & Chr$(13) & "Cdt Groupe ECU"
     EmailMsg.Attachments.Add chemin
     EmailMsg.CC = "bruno.beaulieu@atosorigin.com" '; <a href="mailto:eddie.lechevretel@atosorigin.com">eddie.lechevretel@atosorigin.com</a> "
     
    ' Placement de l'e-mail dans la boîte d'envoi :
     EmailMsg.Send
     
     
     'EmailMsg.Attachments
    Set EmailMsg = Nothing
    Set Email = Nothing
    End Function
    je n'est pas regardé le reste du code car je n'utilise pas Outlook mais CDO regarde dans les liens de ma signature si ca t'intéresse
    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

  6. #6
    Membre confirmé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2008
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 143
    Par défaut
    bonsoir, merci pour votre aide

    C'est un code que j'ai récupéré sur internet et effectivement je ne comprends pas son utilité !!!
    par contre je bloque avant sur :

    Set Email = CreateObject("Outlook.Application")' a partir de la email est une instance de outlook
    Le message d'erreur est sur cette ligne et il refuse de gérer à priori l'instance ????
    voir un peu plus haut un autre code récupéré beaucoup plus simple qui m'expose au même problème je l'ai déposé a 21h31

    Après l'intervention de OBO29 j'ai rectifié le code mais n'avance pas sur mon problème.
    pour ce code c'est la ligne 9 en cause et donc toujours au moment de la création d'instance.

    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
    'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
    ' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
    Sub Envoyer_Mail_Outlook()
     
     
    Dim ObjOutlook As Object, oBjMail As Object
    Dim Nom_Fichier As String
     
    Set ObjOutlook = CreateObject("Outlook.Application")
    Set oBjMail = ObjOutlook.CreateItem(0)
     
    '---------------------------------------------------------
       'Exemple pour envoyer un classeur en pièce jointe
       'Nom_Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
       'If Nom_Fichier = "Faux" Then Exit Sub
    '---------------------------------------------------------
       'Ou bien entrer le path et nom du fichier autrement
       Nom_Fichier = "C:\Chemin\NomFichier.ext"
        If Nom_Fichier = "" Then Exit Sub
    '---------------------------------------------------------
         With oBjMail
            .To = "LeClient@gmail.com" ' le destinataire
           .Subject = "Ici c'est l'objet"          ' l'objet du mail
           .Body = "Ici le texte du mail "  'le corps du mail ..son contenu
           .Attachments.Add Nom_Fichier '"C:\Data\essai.txt" ' ou Nomfichier
           .Display  '   Ici on peut supprimer pour l'envoyer sans vérification
           .Send
        End With
        ObjOutlook.Quit
        Set oBjMail = Nothing
        Set ObjOutlook = Nothing
    End Sub
    Je recherche sur internet et microsoft depuis un moment et il semblerait que se soit un problème de paramétrage mais je ne comprends pas tout car suis un novice !!

    Pour le CDO j'ai jeté un coup d'oeil rapide, celà semble d'un niveau supérieur ?

    Je reste à votre écoute
    et encore merci

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/10/2014, 22h06
  2. Réponses: 2
    Dernier message: 13/01/2012, 14h02
  3. Réponses: 1
    Dernier message: 26/05/2005, 12h24
  4. message d'erreur lors de la création de la base
    Par ber_jp dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/05/2004, 12h15
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

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