Forcer l'ouverture de Outlook et le laisser ouvert ?

Bonjour à l'équipe,

Sous Excel2007, je désire envoyer un fichier actif (càd celui qui est ouvert et qui comprend la macro) de 10Mo par mail en utilisant la messagerie Outlook2007

Il semble cependant que Outlook doit être ouvert pour que l'envoi soit bien réalisé, même si la fenêtre de message apparait bien grâce à l'instruction .Display 'Montre la fenêtre d'envoi !?

Est-il alors possible de forcer préalablement l'ouverture de Outlook , si celui-ci n'est pas déjà ouvert, envoyer le fichier,et laisser Outlook ouvert , au moins le temps nécessaire à l'envoi d'un tel long fichier ?

(le fichier annexé est malheureusement plus maigre)

Voici le code utilisé mais qui ne laisse pas Outlook ouvert (je ne suis même pas sûr que outlook s'ouvre effectivement car le fichier reste dans la Outbox), même si je supprime la ligne: ObjOutlook.Quit

Merci

'---------------------------------------------------------------

Sub Send1()

Dim ObjOutlook As New Outlook.Application

Dim oBjMail

Dim Nom_Fichier As String

Set ObjOutlook = New Outlook.Application

Set oBjMail = ObjOutlook.CreateItem(olMailItem)

With oBjMail

.To = "Adresse1@yahoo.fr;Adresse2@yahoo.fr" 'Adresses fictives à remplacer pour le test réel !

.Subject = "Titre/Sujet du Mail"

.Body = "Ici le texte du mail " & Chr(10) & "Ligne 2" & Chr(10) & "Ligne 3"

.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name

.Display 'Montre la fenêtre d'envoi

.Send

End With

ObjOutlook.Quit

Set oBjMail = Nothing

Set ObjOutlook = Nothing

End Sub

'-------------------------------------------------------------------------------------

65open-outlook-0.xlsm (18.49 Ko)

Bonjour,

Pour tester l'ouverture d'Outlook:

Sub TestOutlook()
    Dim oOutlook As Object

    On Error Resume Next
    Set oOutlook = GetObject(, "Outlook.Application")
    On Error GoTo 0

    If oOutlook Is Nothing Then
        MsgBox "Attention, Outlook n'est pas ouvert ... "
    Else
        Call Send1
    End If
End Sub

A+

Bonjour et merci pour votre réponse.

Après maintes recherches, j'avais déjà trouvé ce code de vérification d'ouverture de Outlook et je l'ai intégré au début de ma routine globale.

Pour clôturer ce sujet, l'activation de Outlook, (ou de tout autre exécutable, d'ailleurs), l'objet de ma question initiale, se fait par la commande: ID = Shell(sNomFichier)

Ci-dessous, je vous livre volontiers ma routine complète d'envoi de Mail avec contrôle initial de l'activation de Outlook.

Outlook doit évidemment avoir été paramétré une fois pour toute sur votre PC, pour votre messagerie (POP3, smtp, clés d'accès, ...)

N'oubliez pas d'activer "MS outlook Library" dans les Réferences de votre Editeur VBA !

Pour ma part, j'écris toujours une macro de sauvegarde de mon fichier qui s'active à la fermeture du fichier. (Fermeture obligatoire par icône de sortie et impossibilité de fermer Excel sans passer par cette icône !)

Dans le cas où mon fichier doit aussi être envoyé à un destinataire (Webmaster, Responsable...) j'ai donc finalisé ma routine d'envoi de mail:

'++++++++++++++++++++++++++++++++++++++++

Function ExistenceFichier(sFichier As String) As Boolean

ExistenceFichier = Dir(sFichier) <> ""

End Function

'-------------------------------

Sub EnvoiMail()

Dim objMail As Outlook.MailItem

Dim outapp As Outlook.Application

Set outapp = New Outlook.Application

Dim X As Object

Dim sNomFichier As String

'sNomFichier = "C:\Program Files\Microsoft Office\Office12\OUTLOOK.EXE" 'si le programme n'est destiné qu'à votre seul PC vous pouvez écrire ici le chemin exact de votre Outlook.exe, sinon écrivez:

sNomFichier = Sheets("Config").Range("L11").Value

‘Le chemin de Outlook.exe sera alors indiqué en case L11, dans un onglet nommé “Config” car il diffère effectivement en fonction de la version de votre 'Office, ... Chaque utilisateur pourra donc écrire dans cet onglet de configuration le chemin de leur Outlook.exe

' Test activation OUTLOOK

On Error Resume Next

MsgBox "Je vérifie si Outlook est activé ..."

' On vérifie si Outlook est fermé

Set X = GetObject(, "Outlook.application")

If Err.Number <> 0 Then 'Si<>0 alors Outlook est fermé

MsgBox "Microsoft Outlook est fermé !" & Chr(10) & Chr(10) & "Je vais donc lancer Outlook en tâche de fond ..."

'Test de l'adresse chemin de Outlook.exe

If ExistenceFichier(sNomFichier) Then

MsgBox "Je vais rechercher Outlook sur votre PC ..."

ID = Shell(sNomFichier)

Else

MsgBox "Je ne reconnais pas l'adresse de OUTLOOK.exe sur votre PC (A préciser dans l'onglet Config) !" & Chr(10) & Chr(10) & "Le fichier se trouve cependant bien envoyé dans la Outbox de Outlook ..." & Chr(10) & Chr(10) & "Il faudra donc lancer manuellement Outlook pour que le fichier soit envoyé !"

End If

Else

MsgBox "Outlook est déja ouvert ..."

End If

'Création instance Outlook

Set outapp = New Outlook.Application

Dim olExplorer As Outlook.Explorer

' Création objet Mail

Set objMail = outapp.CreateItem(olMailItem)

'Création Object

Dim mpf As Outlook.MAPIFolder

'Format Mail Texte

objMail.BodyFormat = olFormatRichText

'Affiche le mail dans Outlook. Sans cette ligne la fenêtre n’est pas visible

objMail.Display

'Sujet du mail

objMail.Subject = " Votre titre sujet ………………."

'Corps du message

objMail.Body = "---> Ligne1 Blala bla..." & Chr(10) & " " & Chr(10) & " Ligne2 …" & Chr(10) & " " & Chr(10) & "Ligne3 …" & Chr(10) & Chr(10) & " Signature …" & Chr(10) & "Ligne finale …"

'Destinataire(s) principaux du message

objMail.To = "AdressePrincipale1@yahoo.fr;AdressePrincipale2@alpmn.be"

objMail.Attachments.Add ThisWorkbook.Path & "\" & ThisWorkbook.Name

'Destinataires en Copie ou en copie cachée

objMail.CC = "Adresse CCopie1@gmail.com"

objMail.BCC= «Adresse BCCopie2@swing.be»

'Si vous souhaitez forcer l’envoi directement depuis le code VBA, sans laisser le temps à l’utilisateur de relire le mail il vous suffit de faire appel à :

objMail.Send '--->Envoi direct dans la Outbox

Set outapp = Nothing

Set objMail = Nothing

AppActivate (sNomFichier) ' Remise du fichier Excel en avant plan

End Sub

'+++++++++++++++++++++++++++++++++++++++++++++++++

Rechercher des sujets similaires à "forcer ouverture outlook laisser ouvert"