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 :

Erreur 429 sur GetObject("", "Outlook.Application")


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Erreur 429 sur GetObject("", "Outlook.Application")
    Bonjour à tous,
    Je tourne en rond depuis deux jour pour faire fonctionner l'envoi de mail par Outlook en VBA à travers un objet outlook.application.
    Je test si outlook est ouvert (avec une fonction IsOfficeRunning)
    si Outlook n'est pas ouvert je crée l'objet par

    Set appOutLook = CreateObject("Outlook.Application")
    Là tout baigne j'ai bien un nouveau message qui se crée

    Par contre si Outlook est ouvert impossible de le récupérer par
    Set appOutLook = GetObject("", "Outlook.Application")
    Là j'ai une erreur 429
    Quelqu'un aurait-il une idée lumineuse car je suis à sec

    Ci-joint le code complet de la fonction
    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 EnvoiMail(AdrCible As String, Sujet As String, Corps As String, Pj As String) As Boolean
        Dim appOutLook As outlook.Application
        Dim oMail As MailItem
        On Error GoTo err
        EnvoiMail = True
        If IsOfficeRunning(App_Outlook, True) Then
            'outlook est ouvert
            MsgBox "outlook running", vbOKOnly, "vérification office"
            Set appOutLook = GetObject("", "Outlook.Application")
     
        Else
            'outlook est fermé
            Set appOutLook = CreateObject("Outlook.Application")
     
        End If
     
        Set oMail = appOutLook.CreateItem(olMailItem)
     
        oMail.To = AdrCible
        oMail.Subject = Sujet
        oMail.Body = Corps
        oMail.Attachments.Add (Pj)
        oMail.Display
        'oMail.Send
        GoTo finally
    err:
     
    MsgBox err.Description + Str(err.Number), vbCritical, "Fonction : EnvoiMail  - Module : 02Mail"
            Exit Function
    finally:
        On Error Resume Next
        Set oMail = Nothing
        Set appOutLook = Nothing
    End Function

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonsoir bertin

    Outlook peut très bien être manipulé sans etre ouvert !
    Donc tu peux enlever les lignes 7 à 13 ainsi que le End If ,celà devrait marcher.
    Cdlt

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Ben justement non ça marche pas
    Citation Envoyé par Thierry_PALLIER Voir le message
    Bonsoir bertin

    Outlook peut très bien être manipulé sans etre ouvert !
    Donc tu peux enlever les lignes 7 à 13 ainsi que le End If ,celà devrait marcher.
    Cdlt
    Merci thierry pour ta réponse mais ...
    justement ça marche quand outlook est fermé mais pas quand il est ouvert !

    Quand je fait un createobjet alors qu'outlook est ouvert jai l'erreur 429
    "un composant activex ne peut créer d'objet"
    C'est pour celà que j'ai essayé avec getobject, toujours quand outlook est ouvert, et j'ai la même erreur.

    Les utilisateurs ont en permanence Outlook ouvert et passe leurs journées à envoyer des mails, je ne peux pas leur demander de fermer Outlook à chaque fois

    Bonne journée

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Est-ce vraiment le code ?
    Je pense que ce plantage ne vient pas du code.

    Dans une base simplissime avec seulement une table et sans code VBA si outlook est ouvert j'ai ce message


    Si outlook est fermé le message se crée et je peux l'envoyer ?????

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 475
    Points : 850
    Points
    850
    Par défaut
    Bonjour ,on va y arrivé.
    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
    'sans reference Outlook,sans redemption
     
     
        Dim appOutLook As Object    'Outlook.Application
        Dim oMail As Object    'As Outlook.MailItem
     
        Set appOutLook = CreateObject("Outlook.Application")
        Set oMail = appOutLook.CreateItem(oMailItem)
    'avec un objet,il faut utiliser un bloc with.
    With oMail
       oMail.To = AdrCible
        oMail.Subject = Sujet
        oMail.Body = Corps
        oMail.Attachments.Add (Pj)
    End With
        oMail.Display
        'oMail.Send
        'GoTo finally
    remet ta gestion d'erreur ,cà marche pour moi ,ouvert ou fermé (version 2003)
    Dis nous si c'est bon.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Toujours pas
    Eh non, toujours pareil, ça marche Outlook fermé mais ça plante quand il est ouvert
    J'avais déjà essayé ce type de déclaration

    Merci quand même

    Bonne journée

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

    Il faut faire une gestion d'erreur, voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On Error Resume Next
        Set outObj = GetObject(, "Outlook.Application")
        On Error GoTo 0
        If outObj Is Nothing Then
            Set outObj = CreateObject("Outlook.Application")
        End If
    Bien sûr il faut remplacer outObj par ta déclaration d'Outlook.

    Philippe
    Dernière modification par Invité ; 22/03/2013 à 13h13.

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

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Bonjour,
    Perso je n'ai pas de problème si Outlook est ouvert ou fermé.
    Voici un exemple de code que j'utilise :
    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
    Public Sub envoyerMail(pDestinataire As String, pCC As String, pMessage As String, pPieceJointe As String, pObject As String)
     
        Dim MonOutlook As Outlook.Application
        Dim MonMessage As Outlook.MailItem
     
        On Error GoTo Err_envoyerMail
     
        ' ===== Initialisation =====
        Set MonOutlook = CreateObject("Outlook.Application")
        Set MonMessage = MonOutlook.CreateItem(0)
     
        ' ===== Création de l'email =====
        With MonMessage
            .To = pDestinataire
            .CC = pCC
            .Subject = pObject
            .Body = pMessage
    		' pPieceJointe doit être de la forme C:\monDossier\monFichier.extension
            If Len(pPieceJointe) <> 0 Then .Attachments.Add pPieceJointe
    		' Affiche le mail (commenter la ligne pour envoi du mail en tâche de fond)
            .Display
    		' Envoie le mail automatiquement (décommenter la ligne pour envoi du mail en tâche de fond)
            '.Send
        End With
     
    Exit_envoyerMail:
        Set MonOutlook = Nothing
        Exit Sub
     
    Err_envoyerMail:
        Select Case Err.Number
            Case Else
                MsgBox "Erreur n°" & Err.Number & vbCrLf & "Description : " & Err.Description & vbCrLf & "Source : " & Err.Source, vbCritical, "Erreur"
        End Select
        Resume Exit_envoyerMail
     
    End Sub

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour

    Il faut faire une gestion d'erreur, voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    On Error Resume Next
        Set outObj = GetObject(, "Outlook.Application")
        On Error GoTo 0
        If outObj Is Nothing Then
            Set outObj = CreateObject("Outlook.Application")
        End If
    Bien sûr il faut remplacer outObj par ta déclaration d'Outlook.

    Philippe

    Merci pour ta proposition mais si tu regarde le post plus au tu verras que j'ai essayé de tester l'ouverture d'outlook pour faire un get à la place du create mais dans les deux cas le résultat est le même, plantage quand outlook est ouvert.

    Bonne journée

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par paidge Voir le message
    Bonjour,
    Perso je n'ai pas de problème si Outlook est ouvert ou fermé.
    Voici un exemple de code que j'utilise :
    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
    Public Sub envoyerMail(pDestinataire As String, pCC As String, pMessage As String, pPieceJointe As String, pObject As String)
     
        Dim MonOutlook As Outlook.Application
        Dim MonMessage As Outlook.MailItem
     
        On Error GoTo Err_envoyerMail
     
        ' ===== Initialisation =====
        Set MonOutlook = CreateObject("Outlook.Application")
        Set MonMessage = MonOutlook.CreateItem(0)
     
        ' ===== Création de l'email =====
        With MonMessage
            .To = pDestinataire
            .CC = pCC
            .Subject = pObject
            .Body = pMessage
    		' pPieceJointe doit être de la forme C:\monDossier\monFichier.extension
            If Len(pPieceJointe) <> 0 Then .Attachments.Add pPieceJointe
    		' Affiche le mail (commenter la ligne pour envoi du mail en tâche de fond)
            .Display
    		' Envoie le mail automatiquement (décommenter la ligne pour envoi du mail en tâche de fond)
            '.Send
        End With
     
    Exit_envoyerMail:
        Set MonOutlook = Nothing
        Exit Sub
     
    Err_envoyerMail:
        Select Case Err.Number
            Case Else
                MsgBox "Erreur n°" & Err.Number & vbCrLf & "Description : " & Err.Description & vbCrLf & "Source : " & Err.Source, vbCritical, "Erreur"
        End Select
        Resume Exit_envoyerMail
     
    End Sub
    Eh oui mais pas sur mon poste !!!
    Merci

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

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

    Informations forums :
    Inscription : Février 2010
    Messages : 801
    Points : 1 107
    Points
    1 107
    Par défaut
    Citation Envoyé par bertin Voir le message
    Eh oui mais pas sur mon poste !!!
    Merci
    Format C: ? :-p

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par bertin Voir le message
    Merci pour ta proposition mais si tu regarde le post plus au tu verras que j'ai essayé de tester l'ouverture d'outlook pour faire un get à la place du create mais dans les deux cas le résultat est le même, plantage quand outlook est ouvert.

    Bonne journée
    Bonjour Bertin,

    as-tu trouvé la solution à ton problème. j'ai le même et c'est vrai qu'on a l'impression de tourner en rond !!!

    fred

  13. #13
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 662
    Points : 34 365
    Points
    34 365

Discussions similaires

  1. Erreur 429 sur création
    Par olimpio dans le forum Installation, Déploiement et Sécurité
    Réponses: 1
    Dernier message: 13/09/2008, 03h36
  2. Excel Erreur 429 sur la version 97 mais pas 2002
    Par drthodt dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 19/06/2008, 18h06
  3. [SQL2K]Requete sur une chaine avec une ou plusieurs quote
    Par tazamorte dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/04/2007, 09h22

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