Envoyer mail outlook en "Late binding" = Erreur 80080005

Bonjour à tous,

J'ai créer une macro d'envoi de mails, mais je l'utilise sur différentes versions d'excel. Pour palier le problème des ddl manquantes, je souhaite donc passer mon code en late binding plutôt qu'en early (qui fonctionne bien mais m'oblige à avoir les bibliothèques des versions d'office).

Je me familiarise tout juste avec ces notions donc c'est possible que je sois passé à coté d'un truc...

J'ai Outlook d'ouvert, puis j'utilise cette macro toute simple, mais ça ne fonctionne pas, ça me mets le message d'erreur ci dessous:

Sub EnvoyerMail()

Dim objOL As Object
Set objOL = CreateObject("Outlook.Application")

End Sub
erreur late binding

Sauriez vous d'où vient le problème svp?

Merci à vous

Bonjour ced-le-dingue

Il manque un certain nombres de ligne pour que cela fonctionne correctement je pense
vous instanciez Outlook sans rien faire derrière...

Essayez ce code pour voir

Sub EnvoiMail()
  ' Déclaration des variables utilisées dans le code
  Dim OutObj As Object, Email As Object
  ' Création d'une instance Outlook pour envoyer un mail
  Set OutObj = CreateObject("Outlook.Application")
  Set Email = OutObj.CreateItem(0)
  ' Avec mon objet Email
  With Email
    .Display  ' Afficher le mail pour afficher la signature
    ' Destinataire(s) du mail
    .To = "emaildestinataire@fai.fr"
    ' Copie du mail
    .CC = "emaildestinataire@fai.fr"
    ' Sujet de l'eMail
    .Subject = "Ceci est le sujet de mon mail"
    ' Corps du mail avec signature à la fin
    .HtmlBody = "Bonjour," & "<BR><BR>" _
    & "Ceci est un exemple<BR><BR>" & .HtmlBody
    ' Joindre le fichier précédemment créé
    '.Attachments.Add sPath & sFileName
    ' Envoyer l'email
    '.Send
  End With
  ' Effacer les variable objet
  Set Email = Nothing: Set OutObj = Nothing
End Sub

A+

Bonjour Bruno,

Oui j'ai mis juste le bout du code où ça coince, mais sinon oui j'ai mis tout comme toi (j'ai aussi essayé avec tout ton code, j'obtiens la même erreur)....

C'est vraiment à la ligne "Set OutObj = CreateObject("Outlook.Application")" que ça mouline pendant 15 sec avant de m'afficher le fameux message d'erreur...

Re,

Peut-être faire une réparation du pack Office

Vous n'êtes pas sur Mac j'espère ?

A+

Non non je suis sous windows 10, office 2013

J'ai essayé avec une autre application (Word) et ça fonctionne, il n'y a que avec Outlook que ça me fait ça...

Re,

Votre version Excel dans votre profil est 2010, il faudra changer la version

Avez-vous essayer une réparation comme indiqué plus haut

Nota : vous ne lancez pas cette depuis Outlook lui même j'espère

A+

Oui je changerai.

En fait je n'ai pas encore essayé vu que cela marche pour word... Est ce que cela ne viendrait pas d'un paramètre de mon Outlook plutot?

Je peux tenter de "réparer" mais mon outlook fonctionne super bien, et je n'ai jmais modifié quoi que ce soit dedans...

Non non, c'est une macro que je lance depuis Excel.

Et si je fais la réparation et que ça ne fonctionne toujours pas, quelle autre cause cela peut il être?

Re,

Et si je fais la réparation et que ça ne fonctionne toujours pas, quelle autre cause cela peut il être?

Si nous savions tout... ah les mystères de l'informatique

Et sur le poste en Early ça fonctionne sans problème

A+

ah merde ;( ...

Oui, en early ça fonctionne... c'est vraiment chiant tout ça mais bon... Tant pis, merci quand même

Bonjour,

Et un bête reboot de l'ordi ?

Bonjour,

Dans votre environnement, si vous voulez rester en "Late Binding", ceci devrait fonctionner

Sub EnvoyerMail()
    Dim objOL As Object

    Set objOL = GetObject(, "Outlook.Application")
    If objOL Is Nothing Then Set objOL = CreateObject("Outlook.Application")

End Sub

Magnifique Thev, c'est exactement ça, ça marche!! Merci beaucoup!

Par contre même en mettant display, le message s'ouvre en arrière plan... Tu sais comment je peux faire pour qu'il s'ouvre au 1er plan? Voici mon code suite à ton aide:

Sub EnvoyerMail()
    Dim objOL As Object

    Set objOL = GetObject(, "Outlook.Application")
    If objOL Is Nothing Then Set objOL = CreateObject("Outlook.Application")
    Set oBjMail = objOL.CreateItem(olMailItem)

    'Création du mail
        With oBjMail
            .To = "E.Exemple@exemple.com"
            .Subject = "Problème sur le fichier Excel d'Audit trail"
            .Body = "Bonjour M. Exemple," & Chr(10) & Chr(10) & "J'ai un soucis, "
            .display
        End With

End Sub

Daniel: Effectivement je n'avais pas tenté cette solution XD. Heureusement Thev est arrivé à la rescousse

Re,

Bonjour DanielC, Thev 😉

Si le code de Thev fonctionne, c'est qu'une instance était déjà active, ce qui peut expliquer le message d'erreur

Un reboot (solution de DanielC) aurait pu régler le problème 😉

A+

Tu sais comment je peux faire pour qu'il s'ouvre au 1er plan?
Tu peux essayer
objOL.ActiveWindow.Activate

Thev: Merci pour objOL.ActiveWindow.Activate. Cependant, j'ai essayé ça n'a pas marché tout de suite... ça a marché au bout d'1 ou 2 fois je crois. Ensuite j'ai "désactivé" la ligne (objOL.ActiveWindow.Activate) et ça marchait toujours... Du coup j'imagine que cette ligne n'a besoin d'etre appelée qu'une seule fois tant qu'Excel est ouvert... Je la laisserai toujours dans ce cas. Merci beaucoup en tout cas Thev!

Bruno (et Thev du coup): "c'est qu'une instance était déjà active":

Justement, ce que je pige pas c'est que pour essayer j'ai fermé Outlook, et là, même avec le bloc if que m'a fait Thev, ça ne marche plus si Outlook n'est pas ouvert... Pourtant ce bloc conditionnel est censé couvrir les deux éventualités (Oulook ouvert et Outlook fermé)... Je ne comprends pas...

Oui pour le reboot je tenterai au prochain blocage que j'aurai haha

Bonjour à tous

@ced_le_dingue :

Je le comprends comme toi. Même si une instance de Outlook est active, rien n'empêche d'en ouvrir une seconde. D'ailleurs, le "late binding" fonctionne même si Outlook est déjà ouvert :

capture d ecran 20221102 090102

Daniel

Bonjour DanielC,

Apparemment l'erreur indique que trop d'instances d'objet ont été créées. Un reboot du PC comme indiqué, a des chances de résoudre le problème.

@thev :

Merci.

Bonjour à tous,

En effet alors, le redémarrage s'impose.

Ah oui, j'avais pas regardé la cause du code d'erreur, mais d'après ce que je comprends, ça survient lorsqu'on a plusieurs compte d'utilisateurs d'ouverts, hors j'en ai qu'un vu que je suis sur mon PC perso. Mystère donc haha. Merci beaucoup en tout cas ;)

Excellente journée à tous

Rechercher des sujets similaires à "envoyer mail outlook late binding erreur 80080005"