Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Envoi d'un mail en tache de fond

7 réponses
Avatar
Gadget
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes sur
l'écran. Pendant ce petit laps de temps, l'utilisateur peut perturber
l'envoi involontairement. Y a-t-il des méthodes d'envoi de mail de manière
totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.

7 réponses

Avatar
Philippe.R
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes
sur l'écran. Pendant ce petit laps de temps, l'utilisateur peut perturber
l'envoi involontairement. Y a-t-il des méthodes d'envoi de mail de manière
totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.



Avatar
Gadget
Non, mais j'ai trouvé la solution sur le net, en faisant une référence
précoce à Outlook puis en utilisant son instruction .Sendmail, le tout
agrémenté du petit utilitaire ClickYes. La fenêtre du mail n'apparaît alors
pas.
http://officeassistant.ibelgique.com/excel_vba.html?3&weborama0#Send_mail_Outlook :

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 =
.Subject = "Test"
.Body = "Contenu s " & vbLf & "deuxième linge"
.Attachments.Add "c:test1.TXT"
.Attachments.Add "c:test2.TXT"
.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


Néanmoins, j'ai encore un petit problème : si j'execute cette routine
plusieurs fois assez rapidement, il y a téléscopage : une nouvelle instante
d'outlook est ouverte avant que l'ancienne soit fermée (elle attend
probablement que le mail soit effectivement envoyé), ce qui provoque un
certain téléscopage (message "Cette tâche a été annulée avant d'être
achevée"). Il semble qu'un .doevents ne serve à rien. J'ai envisagé la
solution d'une boucle d'attente mais il y a sûrement plus élégant : une
appel API, WMI ou je ne sais quoi qui ne redonne la main que quand le mail
est effectivement parti et outlook prêt pour un nouveau tour.
Ou alors mettre tout ça dans la boite d'envoi et n'envoyer effectivement que
sur ordre.
C'est possible ?
Merci à tous.


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:
e5KohaF%
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes
sur l'écran. Pendant ce petit laps de temps, l'utilisateur peut perturber
l'envoi involontairement. Y a-t-il des méthodes d'envoi de mail de
manière totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.






Avatar
michdenis
Tu peux utiliser ceci :

P.S- Attention aux lignes qui pourraient être coupé
par le service de messagerie.

'------------------------------------
Sub test()

'Requiert la référence suivante :
'Microsoft CDO For Windows 2000 Librairy

Dim ObjMail As New CDO.Message
Dim ServeurSMTP As String, Texte As String
Dim Suget As String, Fichier As String
Dim Destinataire As String, Expediteur As String
Dim FichiersJoints As String
Dim AutresDestinataires As String

'*********** à Définir******************
ServeurSMTP = "smtp.... ' ...à définir"
Sujet = "La raison du message ?"
Texte = "Texte du Message ?"
'Si plusieurs fichiers : séparer par un point-virgule
FichiersJoints = "" ' si requis
Destinataire = ""
Expediteur = ""
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
With ObjMail
.To = Destinataire ' ""
.From = Expediteur
.CC = AutresDestinataires
.Subject = Sujet
.MimeFormatted = True
.GetStream.Charset = cdoISO_8859_15
.BodyPart.Charset = cdoISO_8859_15
.BodyPart.ContentTransferEncoding = "base64"
.TextBody = Texte
If Dir(Fichier) <> "" Then
.AddAttachment FichiersJoints
End If
With .Configuration.Fields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") =
2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") =
ServeurSMTP
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25
.Update
End With
.Send
End With

End Sub
'------------------------------------




"Gadget" a écrit dans le message de news:
489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes sur
l'écran. Pendant ce petit laps de temps, l'utilisateur peut perturber
l'envoi involontairement. Y a-t-il des méthodes d'envoi de mail de manière
totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.
Avatar
SuperGolgoth
C'est quand meme dommage que clickyes ne dure qu'un mois en version
d'essai ...
n'y aurait-il pas une autre solution totalement gratuite et
transparente ?

Gadget a exposé le 07/08/2008 :
Non, mais j'ai trouvé la solution sur le net, en faisant une référence
précoce à Outlook puis en utilisant son instruction .Sendmail, le tout
agrémenté du petit utilitaire ClickYes. La fenêtre du mail n'apparaît alors
pas.
http://officeassistant.ibelgique.com/excel_vba.html?3&weborama0#Send_mail_Outlook
:

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 =
.Subject = "Test"
.Body = "Contenu s " & vbLf & "deuxième linge"
.Attachments.Add "c:test1.TXT"
.Attachments.Add "c:test2.TXT"
.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


Néanmoins, j'ai encore un petit problème : si j'execute cette routine
plusieurs fois assez rapidement, il y a téléscopage : une nouvelle instante
d'outlook est ouverte avant que l'ancienne soit fermée (elle attend
probablement que le mail soit effectivement envoyé), ce qui provoque un
certain téléscopage (message "Cette tâche a été annulée avant d'être
achevée"). Il semble qu'un .doevents ne serve à rien. J'ai envisagé la
solution d'une boucle d'attente mais il y a sûrement plus élégant : une appel
API, WMI ou je ne sais quoi qui ne redonne la main que quand le mail est
effectivement parti et outlook prêt pour un nouveau tour.
Ou alors mettre tout ça dans la boite d'envoi et n'envoyer effectivement que
sur ordre.
C'est possible ?
Merci à tous.


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de news:
e5KohaF%
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
-- Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes
sur l'écran. Pendant ce petit laps de temps, l'utilisateur peut perturber
l'envoi involontairement. Y a-t-il des méthodes d'envoi de mail de manière
totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.








Avatar
Gadget
Effectivement. Si qqn trouve une solution, je sius preneur...

"SuperGolgoth" a écrit dans le message de news:

C'est quand meme dommage que clickyes ne dure qu'un mois en version
d'essai ...
n'y aurait-il pas une autre solution totalement gratuite et transparente ?

Gadget a exposé le 07/08/2008 :
Non, mais j'ai trouvé la solution sur le net, en faisant une référence
précoce à Outlook puis en utilisant son instruction .Sendmail, le tout
agrémenté du petit utilitaire ClickYes. La fenêtre du mail n'apparaît
alors pas.
http://officeassistant.ibelgique.com/excel_vba.html?3&weborama0#Send_mail_Outlook :

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 =
.Subject = "Test"
.Body = "Contenu s " & vbLf & "deuxième linge"
.Attachments.Add "c:test1.TXT"
.Attachments.Add "c:test2.TXT"
.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


Néanmoins, j'ai encore un petit problème : si j'execute cette routine
plusieurs fois assez rapidement, il y a téléscopage : une nouvelle
instante d'outlook est ouverte avant que l'ancienne soit fermée (elle
attend probablement que le mail soit effectivement envoyé), ce qui
provoque un certain téléscopage (message "Cette tâche a été annulée avant
d'être achevée"). Il semble qu'un .doevents ne serve à rien. J'ai
envisagé la solution d'une boucle d'attente mais il y a sûrement plus
élégant : une appel API, WMI ou je ne sais quoi qui ne redonne la main
que quand le mail est effectivement parti et outlook prêt pour un nouveau
tour.
Ou alors mettre tout ça dans la boite d'envoi et n'envoyer effectivement
que sur ordre.
C'est possible ?
Merci à tous.


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news: e5KohaF%
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
-- Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes
sur l'écran. Pendant ce petit laps de temps, l'utilisateur peut
perturber l'envoi involontairement. Y a-t-il des méthodes d'envoi de
mail de manière totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.












Avatar
Misange
si tu n'es pas sous 2007 :
http://www.excelabo.net/excel/sortirmail.php#cliqueroui

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gadget a écrit :
Effectivement. Si qqn trouve une solution, je sius preneur...

"SuperGolgoth" a écrit dans le message de news:

C'est quand meme dommage que clickyes ne dure qu'un mois en version
d'essai ...
n'y aurait-il pas une autre solution totalement gratuite et transparente ?

Gadget a exposé le 07/08/2008 :
Non, mais j'ai trouvé la solution sur le net, en faisant une référence
précoce à Outlook puis en utilisant son instruction .Sendmail, le tout
agrémenté du petit utilitaire ClickYes. La fenêtre du mail n'apparaît
alors pas.
http://officeassistant.ibelgique.com/excel_vba.html?3&weborama0#Send_mail_Outlook :

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 =
.Subject = "Test"
.Body = "Contenu s " & vbLf & "deuxième linge"
.Attachments.Add "c:test1.TXT"
.Attachments.Add "c:test2.TXT"
.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


Néanmoins, j'ai encore un petit problème : si j'execute cette routine
plusieurs fois assez rapidement, il y a téléscopage : une nouvelle
instante d'outlook est ouverte avant que l'ancienne soit fermée (elle
attend probablement que le mail soit effectivement envoyé), ce qui
provoque un certain téléscopage (message "Cette tâche a été annulée avant
d'être achevée"). Il semble qu'un .doevents ne serve à rien. J'ai
envisagé la solution d'une boucle d'attente mais il y a sûrement plus
élégant : une appel API, WMI ou je ne sais quoi qui ne redonne la main
que quand le mail est effectivement parti et outlook prêt pour un nouveau
tour.
Ou alors mettre tout ça dans la boite d'envoi et n'envoyer effectivement
que sur ordre.
C'est possible ?
Merci à tous.


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news: e5KohaF%
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
-- Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de secondes
sur l'écran. Pendant ce petit laps de temps, l'utilisateur peut
perturber l'envoi involontairement. Y a-t-il des méthodes d'envoi de
mail de manière totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.














Avatar
Gadget
Merci. Je vais essayer ça.

"Misange" a écrit dans le message de news:

si tu n'es pas sous 2007 :
http://www.excelabo.net/excel/sortirmail.php#cliqueroui

Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Gadget a écrit :
Effectivement. Si qqn trouve une solution, je sius preneur...

"SuperGolgoth" a écrit dans le message de news:

C'est quand meme dommage que clickyes ne dure qu'un mois en version
d'essai ...
n'y aurait-il pas une autre solution totalement gratuite et transparente
?

Gadget a exposé le 07/08/2008 :
Non, mais j'ai trouvé la solution sur le net, en faisant une référence
précoce à Outlook puis en utilisant son instruction .Sendmail, le tout
agrémenté du petit utilitaire ClickYes. La fenêtre du mail n'apparaît
alors pas.
http://officeassistant.ibelgique.com/excel_vba.html?3&weborama0#Send_mail_Outlook :

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 =
.Subject = "Test"
.Body = "Contenu s " & vbLf & "deuxième linge"
.Attachments.Add "c:test1.TXT"
.Attachments.Add "c:test2.TXT"
.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


Néanmoins, j'ai encore un petit problème : si j'execute cette routine
plusieurs fois assez rapidement, il y a téléscopage : une nouvelle
instante d'outlook est ouverte avant que l'ancienne soit fermée (elle
attend probablement que le mail soit effectivement envoyé), ce qui
provoque un certain téléscopage (message "Cette tâche a été annulée
avant d'être achevée"). Il semble qu'un .doevents ne serve à rien. J'ai
envisagé la solution d'une boucle d'attente mais il y a sûrement plus
élégant : une appel API, WMI ou je ne sais quoi qui ne redonne la main
que quand le mail est effectivement parti et outlook prêt pour un
nouveau tour.
Ou alors mettre tout ça dans la boite d'envoi et n'envoyer
effectivement que sur ordre.
C'est possible ?
Merci à tous.


"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news: e5KohaF%
Bonjour,
Pas d'amélioration en bloquant le rafraichissement d'écran en début de
procédure avec l'instruction
application.screenupdatingúlse
et en le remettant à true à la fin ?
-- Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Gadget" a écrit dans le message de
news:489857db$0$897$
Salut à tous.
J'ai récupéré des macros d'envoi de mail par vba, et toutes on un
inconvénient : le mail à envoyer apparaît quelques dixièmes de
secondes sur l'écran. Pendant ce petit laps de temps, l'utilisateur
peut perturber l'envoi involontairement. Y a-t-il des méthodes
d'envoi de mail de manière totalement invisible ?
Précision : j'utilise OE ou Outlook.
Merci.