Erreur d'envoie de mail avec la nouvelle version de Outlook

Bonjour le forum,

petit soucis avec une macro, lorsque j'essaye d'envoyer mon mail et que j'utilise le nouvelle version de Outlook j'ai une erreur liée à l'erreur spécifique 429.

Quelqu'un pourrais m'aider svp.

Merci d'avance

' Envoie du mail
Public Sub EnvoyerMail(RepertoryPath$, FileName$)

        Dim oOutlook As Outlook.Application
        Dim oMailItem As Outlook.MailItem

        ' On tente de créé un objet Outlook en 2 essais, on vérifie si la création de l'objet Outlook remonte une erreur
        On Error Resume Next
                Set oOutlook = GetObject(, "Outlook.Application")

                ' Vérification du retour d'erreur, si supèrieur à 0, pas bon
                If Err.Number > 0 Then

                        ' Si erreur spécifique 429 on interrompt la macro, sinon 2ème essai
                        If Err.Number = 429 Then
                                MsgBox "Error when opening Outlook"
                                Exit Sub
                        Else
                                Err.Clear
                                Set oOutlook = CreateObject("Outlook.application")
                        End If

                        If Err.Number > 0 Then
                                MsgBox "Error when opening Outlook"
                                Exit Sub
                        End If

                End If

        ' Création d'un objet mail avec vérification d'une remontée d'erreur
        On Error Resume Next
                Set oMailItem = oOutlook.CreateItem(0)

                If Err.Number > 0 Then
                        MsgBox "Error when generating the mail"
                Else

                        Dim sBody$

                        sBody = Sheets("Information Page").Range("C32").Value

                        With oMailItem
                                .To = Func_additionnel.DefinitionDestinataire(Sheets("Drop List").ListObjects("Tab_To"))
                                .CC = Func_additionnel.DefinitionDestinataire(Sheets("Drop List").ListObjects("Tab_Cc"))
                                .Subject = "OPR request for the project " & Sheets("OPR info").Range("B11").Text & " - " & Sheets("Information Page").Range("C13").Text
                                .BodyFormat = olFormatHTML 'olFormatPlain
                                .Body = Func_additionnel.InsertionCommentaireMail(Sheets("OPR info").Range("B2").Value, sBody)
                                .Attachments.Add RepertoryPath & FileName
                                .Display        ' A décommenter si le mail dois s'afficher avant envoi manuel
                                '.Send          ' A décommenter si le mail dois s'envoyer directement
                        End With

                End If

                ' On supprime les objets de la mémoire
                Set oOutlook = Nothing
                Set oMailItem = Nothing

End Sub

Apparemment c'est lié à un objet AcitivX, y as-t'il une autre méthode?

Bonjour,

Qu'entends-tu par "Nouvelle version de Outlook" ?

Microsoft 365 ou la version Online ?

Bizz

Bonne question en effet...

J'ai un bouton "nouvelle version d'Outlook" dans outlook (version PC) et j'ai pas réfléchis plus loin, mes excuses...

Il s'agit de Microsoft 365.

Bonjour Heavy_B

La nouvelle version d'Outlook est basée sur Outlook Online d'où le souci pour moi

Perso, j'ai désactivé cette version

A+

J'avais déjà pensé a cela et je te rejoint JExceL2fr.

Malheureusement pour le moment on as encore le choix dans mon entreprise mais je crain qu'as l'avenir on ne l'ai plus, et dejà beaucoup de collègue y sont passé...

Re,

Il faudra alors passer au Script Office, quand ce sera possible, sinon pas d'autres solutions

En revanche pour ton code, tu peux utiliser cette fonction

Option Explicit
Function CreateOutlook() As Object
    Dim Outlook As Object
    On Error Resume Next
        Set Outlook = GetObject(, "Outlook.Application")
    On Error GoTo 0
    If Outlook Is Nothing Then Shell "Outlook"
    On Error Resume Next
        Do While Outlook Is Nothing
            Set Outlook = GetObject(, "Outlook.Application")
        Loop
    On Error GoTo 0
    Set Outlook = CreateObject("Outlook.Application")
    Outlook.ActiveWindow.WindowState = 1
    Set CreateOutlook = Outlook
    Set Outlook = Nothing
End Function

Et tu l'appelles par

Set oOutlook = CreateOutlook()

A+

Désolé JExceL2fr mais je suis encore débutant et certaines choses ne sont pas évidente pour moi :

si je comprend bien je place le code que tu me donne dans un module et je l'appelle via la ligne de code mais que je place ou, ou plutot à la place de quoi?

Merci

Re,

C'est une fonction, tu la met dans le module que tu veux, perso j'en ai toujours un qui s'appelle "Fonctions"

Et sinon pour l'appel, c'est à la place de ta ligne

 Set oOutlook = GetObject(, "Outlook.Application")

J'espère que ce sera plus clair

Merci beaucoup et désolé de la bête question...

Autre bête question, ce change quoi?

Re,

Dans votre précédent, vous ne faites qu'un Get de l'application, donc si Outlook n'est pas lancé ça plante

Avec cette fonction, soit c'est un Get (application déjà ouverte) soit c'est un Create (application à lancer en late binding)

A+

D'ou le fait qu'il as ré-ouvert un second outlook 365 dans mon essais, par contre dans ce cas là Excel tourne en boucle et ne répond plus...

Merci pour les infos

Rechercher des sujets similaires à "erreur envoie mail nouvelle version outlook"