Masquer affichage mail

Résolu
boomer11 -  
 boomer11 -
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
A voir également:

4 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

voir ceci tout est expliqué:

https://excel-malin.com/codes-sources-vba/envoyer-un-email-avec-excel/

facile a mettre en place!
0
boomer11
 
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 ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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!
0
boomer11
 
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
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Je l'ai essayé, effectivement cela apparaît très furtivement
Je continue à chercher!
@+ Le Pivert
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Bonjour,

Dans les codes precedents, il y a .Display et .Send a la suite, donc normal l'apparition d'Outlook
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
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!
0
f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 
Re,

Pas de probleme pour les deux....!!!!
0
boomer11
 
Merci à tous les 2,
effectivement, il s agissait du .display.
Maintenant ça fonctionne à merveille.
Merci, merci...merci
Bonne continuation
0