Masquer affichage mail

Résolu
Bonjour,

J'utilise actuellement une macro pour envoyer un mail via outlook, seulement j'aimerais qu'au moment de l'exécution de la macro, il n'y est pas l'ouverture de la page du message.
Celui ci s'ouvre et se ferme pratiquement instantanément mais il est visible...Même avec l'utilisation de ScreenUpdating
Avez vous une solution intermédiaire ?
Merci

Voici le code :

Sub Envoyer_Mail_Outlook()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail

Application.ScreenUpdating = False
   
    Set ObjOutlook = New Outlook.Application
    Set oBjMail = ObjOutlook.CreateItem(olMailItem)
'---------------------------------------------------------
        With oBjMail
        .To = "xxx" ' le destinataire
        .Subject = "xxx"          ' l'objet du mail
        .Body = "Ici le texte du mail "  'le corps du mail ..son contenu
        .Display  '   Ici on peut supprimer pour l'envoyer sans vérification
        .DeleteAfterSubmit = True
        .Send
     End With
   
    Set oBjMail = Nothing
    Set ObjOutlook = Nothing

Application.ScreenUpdating = True

End Sub

4 réponses

  1. Merci à tous les 2,
    effectivement, il s agissait du .display.
    Maintenant ça fonctionne à merveille.
    Merci, merci...merci
    Bonne continuation
    1. Cs_le pivert, je te remercie pour ton aide.
      J'avais effectivement tenté de modifier cette valeur... mais le resultat est le même...
      Je crois que j'ai n'aurais pas le choix de l'accepter.
      L'avez vous essayé chez vous ? est ce que ça marche ? c'est peut être lié à autre chose ?
      Merci encore
      1. Contributeur
        Je l'ai essayé, effectivement cela apparaît très furtivement
        Je continue à chercher!
        @+ Le Pivert
      2. Contributeur
        J'ai trouvé avec
        Application.ScreenUpdating = False


        Mais je n'ai pas réussi sur le précédent code.
        J'ai trouvé celui-ci qui fonctionne très bien:

        Option Explicit
        'https://forum.excel-pratique.com/viewtopic.php?t=29003
        '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:\Users\LePivert\Documents\Colorer_cellule.xlsm"
            If Nom_Fichier = "" Then Exit Sub
        '---------------------------------------------------------
        Application.ScreenUpdating = False
              With oBjMail
                .To = "boomer@free.fr" ' 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
            Application.ScreenUpdating = True
        End Sub


        J'ai essayé sans
         Application.ScreenUpdating = False
        cela fonctionne aussi.
        Donc cela vient du code

        Je viens de m'apercevoir que c'est le même code que tu as donné. La seule différence est la pièce jointe.

        J'ai essayé les 2 codes, le tien sans pièce jointe tu as Outlook qui s'affiche et le mien (façon de parler) on ne voit rien.

        C'est curieux!!!!!!!!

        Voilà, j'espère que cela fonctionnera chez toi

        @+ Le Pivert
      3. Bonjour,

        Dans les codes precedents, il y a .Display et .Send a la suite, donc normal l'apparition d'Outlook
      4. Contributeur
        Salut f894009,

        J'ai essayé d'enlever .Display sur le 1er code, cela crée un bug sur .Send.
        Sur le 2ème aucun bug

        J'ai du mal a comprendre!
      5. Re,

        Pas de probleme pour les deux....!!!!
    2. Bonjour,

      Merci pour ce tuto et pour votre réponse,
      En revanche le problème reste le même, j'ai toujours la page du message qui s'affiche une fraction de seconde.
      Ne pouvons nous pas masquer totalement cette opération ?
      1. Contributeur
        Dans le tuto que je t'ai indiqué il y a
        oOutlook.Visible = True


        mets le a False comme ceci:

        Private Sub PreparerOutlook(ByRef oOutlook As Object)
        'par Excel-Malin.com ( http://excel-malin.com )
         
        '------------------------------------------------------------------------------------------------
        'Ce code vérifie si Outlook est prêt à envoyer des emails... Et s'il ne l'est pas, il le prépare.
        '------------------------------------------------------------------------------------------------
        On Error GoTo PreparerOutlookErreur
         
         
        On Error Resume Next
            'vérification si Outlook est ouvert
            Set oOutlook = GetObject(, "Outlook.Application")
            
            If (Err.Number <> 0) Then 'si Outlook n'est pas ouvert, une instance est ouverte
                Err.Clear
                Set oOutlook = CreateObject("Outlook.Application")
                 oOutlook.Visible = False
            Else    'si Outlook est ouvert, l'instance existante est utilisée
                Set oOutlook = GetObject("Outlook.Application")
                oOutlook.Visible = False
            End If
            Exit Sub
         
        PreparerOutlookErreur:
            MsgBox "Une erreur est survenue lors de l'exécution de PreparerOutlook()..."
        End Sub


        Voilà je ne vois que cela!