OVH Cloud OVH Cloud

[EXCEL 2012] fermeture d'un mail outlook

1 réponse
Avatar
flyingjuju
Bonjour,

j'ai crée dans mon fichier excel une fonction qui envoie un mail automatiquement selon un test fait sur la valeur de 2 cellules (gestion de stock)

Voici le code :

Sub SendMail_Outlook()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft 'Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
.To = "adresse mail"
.Subject = "Attention stock de casque ou câble limite"
.Body = "Ceci est un message pour signaler que le stock de casque ou de câble est inférieur ou égal à 3"
.Send '.display
'On peut switcher entre .send et .display selon que l'on veut envoyer le mail (send) ou seulement le préparer 'et le vérifier(display)
End With
End Sub

Cette fonction marche correctement car le mail est bien envoyé cependant le mail est toujours ouvert comme s'il n'avait pas été envoyé.
Est il possible de rendre totalement invisible cette fonction ? c'est à dire peut on fermer la fenêtre du mail à la fin sans fermer totalement outlook ?

Merci

1 réponse

Avatar
MichD
Bonjour,

Si tu veux envoyer un courriel avec Microsoft Outlook de façon
transparente, essaie ce qui suit. Sur le Web, tu dois télécharger
et installer un programme du nom "ClickYes.exe" téléchargeable
à cette adresse :
http://www.contextmagic.com/express-clickyes/free-version.htm

Tu copies le tout dans un module standard

'Déclaration des API dans le haut du module standard
Private Declare Function RegisterWindowMessage _
Lib "user32" Alias "RegisterWindowMessageA" _
(ByVal lpString As String) As Long

Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As Any, _
ByVal lpWindowName As Any) As Long

Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
'---------------------------------------------------------------
Private Sub SomeProc()
Dim wnd As Long, uClickYes As Long, Res As Long

'Avant de lancer cette macro, Dans l'éditeur VBA:
'Faire Menu / Tools / Reference
'Cocher "Microsoft 'Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)

' Register a message to send
uClickYes = RegisterWindowMessage("CLICKYES_SUSPEND_RESUME")

' Find ClickYes Window by classname
wnd = FindWindow("EXCLICKYES_WND", 0&)

' Send the message to Resume ClickYes
Res = SendMessage(wnd, uClickYes, 1, 0)

' ...
' Do some Actions
With olmail
.To = ""
.Subject = "Attention stock de casque ou câble limite"
.Body = "Ceci est un message pour signaler que le stock "
'de casque ou de câble est inférieur ou égal à 3"
.Send '.display
'On peut switcher entre .send et .display selon que l'on
'veut envoyer le mail(send) ou seulement le préparer
'et le vérifier(display)
End With
' Send the message to Suspend ClickYes
Res = SendMessage(wnd, uClickYes, 0, 0)
Set olmail = Nothing: Set ol = Nothing
End Sub
'---------------------------------------------------------------



"flyingjuju" a écrit dans le message de groupe de discussion :


Bonjour,

j'ai crée dans mon fichier excel une fonction qui envoie un mail
automatiquement
selon un test fait sur la valeur de 2 cellules (gestion de stock)

Voici le code :

Sub SendMail_Outlook()
'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools /
Reference
/ Cocher "Microsoft 'Outlook Library"
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
With olmail
To = "adresse mail"
Subject = "Attention stock de casque ou câble limite"
Body = "Ceci est un message pour signaler que le stock de casque ou de câble
est inférieur ou égal à 3"
Send '.display
'On peut switcher entre .send et .display selon que l'on veut envoyer le
mail
(send) ou seulement le préparer 'et le vérifier(display)
End With
End Sub

Cette fonction marche correctement car le mail est bien envoyé cependant le
mail
est toujours ouvert comme s'il n'avait pas été envoyé.
Est il possible de rendre totalement invisible cette fonction ? c'est à dire
peut on fermer la fenêtre du mail à la fin sans fermer totalement outlook ?

Merci