Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre des instances d'Outlook sans jamais les refermer, si bien qu'après
une douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" <asd@zdifu.fr> a écrit dans le message de news:
48b3c4a6$0$890$ba4acef3@news.orange.fr...
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre des instances d'Outlook sans jamais les refermer, si bien qu'après
une douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre des instances d'Outlook sans jamais les refermer, si bien qu'après
une douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" a écrit dans le message de news:
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" a écrit dans le
message
de news:
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
O7Tcf51BJHA.1892@TK2MSFTNGP04.phx.gbl...
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" <cpapounospamthanx@lapostenospamthanks.net> a écrit dans le
message
de news: eQyy3x1BJHA.2292@TK2MSFTNGP02.phx.gbl...
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" <asd@zdifu.fr> a écrit dans le message de news:
48b3c4a6$0$890$ba4acef3@news.orange.fr...
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" a écrit dans le message de news:
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" a écrit dans le
message
de news:
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" a écrit dans le message de news:
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" a écrit dans le
message
de news:
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news:
O7Tcf51BJHA.1892@TK2MSFTNGP04.phx.gbl...
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" <cpapounospamthanx@lapostenospamthanks.net> a écrit dans le
message
de news: eQyy3x1BJHA.2292@TK2MSFTNGP02.phx.gbl...
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" <asd@zdifu.fr> a écrit dans le message de news:
48b3c4a6$0$890$ba4acef3@news.orange.fr...
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Ta procédure générale devrait plutôt ressembler à ceci :
Ce qui suit devrait être dans le même module :
'Dans le haut de ton module, déclaration de tes variables
Dim ol As Outlook.Application
Dim olmail As MailItem
'Dans la procédure qui appelle la sub "EnvoyerMailOutlook"
'tu crées une instance et c'est la même instance qui enverra
'tous tes messages. Il s'agit de créer la boucle pour renseigner
'adéquatement les variables de la sub "EnvoyerMailOutlook"
'Ceci n'a pas été testé évidemment, mais c'est la structure
'que tu devrais essayer de mettre en place.
'--------------------------------------------
Sub test()
Dim i
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
'Création de la boucle ....
tableau = "???"
Destinataire = "???"
Sujet = "???"
Corps = "???"
EnvoyerMailOutlook tableau, Destinataire, Sujet, Corps
'Quand tous tes courriels sont envoyés, tu supprimes tes objets.
ol.Quit
Set olmail = Nothing: Set ol = Nothing
End Sub
'--------------------------------------------
Sub EnvoyerMailOutlook(TableauPJ() As String, _
Destinataire As String, _
Sujet As String, _
Corps As String)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
End Sub
'--------------------------------------------
"michdenis" a écrit dans le message de news:
Remplace ceci :
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Par
Set ol = Nothing
"papou" a écrit dans le
message
de news:
Bonjour
Quelques questions :
1°) Comment appelles-tu la procédure EnvoyerMailOutlook ?
2°) Que viennent faire ces instructions dans la procédure ?
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
Cordialement
Pascal
"Gadget" a écrit dans le message de news:
48b3c4a6$0$890$Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro
ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par
trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant par exemple les articles 'New'. Il ne m'ouvrait alors qu'une
instance, mais n'envoyait jamais rien (bien que les mails se retourvent
dasns les 'Elements envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du mail (chaque mail faisant 400ko, son envoi peut prendre quelques
secondes) ?
Pourquoi tu n'utilises pas quelque chose comme ceci...
ça règlerait bien des problèmes ....
Pour ton information, la bibliothèque responsable est :
Bibliothèque : CDO
Fichier responsable : c:Windowssystem32cdosys.dll
Référence : Microsoft CDO for Windows 2000 Library
'-----------------------------------------
Sub test()
Dim ObjMail As Object
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 = "c:classeur1.xls" ' si requis
Destinataire = ""
Expediteur = ""
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
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:
48b3c4a6$0$890$
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant
par exemple les articles 'New'. Il ne m'ouvrait alors qu'une instance,
mais
n'envoyait jamais rien (bien que les mails se retourvent dasns les
'Elements
envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du
mail (chaque mail faisant 400ko, son envoi peut prendre quelques secondes)
?
Pourquoi tu n'utilises pas quelque chose comme ceci...
ça règlerait bien des problèmes ....
Pour ton information, la bibliothèque responsable est :
Bibliothèque : CDO
Fichier responsable : c:Windowssystem32cdosys.dll
Référence : Microsoft CDO for Windows 2000 Library
'-----------------------------------------
Sub test()
Dim ObjMail As Object
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 = "c:classeur1.xls" ' si requis
Destinataire = "Destinataire@hotmail.com"
Expediteur = "Expediteur@hotmail.com"
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
With ObjMail
.To = Destinataire ' "Destinataire@Hotmail.com"
.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" <asd@zdifu.fr> a écrit dans le message de news:
48b3c4a6$0$890$ba4acef3@news.orange.fr...
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant
par exemple les articles 'New'. Il ne m'ouvrait alors qu'une instance,
mais
n'envoyait jamais rien (bien que les mails se retourvent dasns les
'Elements
envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du
mail (chaque mail faisant 400ko, son envoi peut prendre quelques secondes)
?
Pourquoi tu n'utilises pas quelque chose comme ceci...
ça règlerait bien des problèmes ....
Pour ton information, la bibliothèque responsable est :
Bibliothèque : CDO
Fichier responsable : c:Windowssystem32cdosys.dll
Référence : Microsoft CDO for Windows 2000 Library
'-----------------------------------------
Sub test()
Dim ObjMail As Object
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 = "c:classeur1.xls" ' si requis
Destinataire = ""
Expediteur = ""
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
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:
48b3c4a6$0$890$
Salut à tous.
J'ai fait une routine d'envoi de mails par VBA Excel avec appel précoce à
Outlook. Ces mails comprennent 3 pièces jointes chacun et sont envoyés
nombreux à chaque fois.
Voici la routine d'envoi de mail :
Sub EnvoyerMailOutlook(TableauPJ() As String, Expediteur As String,
Destinataire As String, Sujet As String, Corps As String)
Application.DisplayAlerts = False
Dim i
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Set ol = New Outlook.Application
Set olmail = ol.CreateItem(olMailItem)
olmail.To = Destinataire
olmail.Subject = Sujet
olmail.Body = Corps
For i = 1 To 3
If TableauPJ(i) = "" Then Exit For
olmail.Attachments.Add TableauPJ(i)
Next i
olmail.Send
Application.DisplayAlerts = True
Set myolapp = CreateObject("Outlook.Application")
myolapp.Quit
Attendre 5
ol.Quit
End Sub
En surveillant le gestionnaire de tâches, j'ai remarqué que la macro ouvre
des instances d'Outlook sans jamais les refermer, si bien qu'après une
douzaine de mails, j'ai un message du genre 'Outlook est utilisé par trop
d'applications'. J'ai essayé à l'aveugle de modifier la routine, en
enlevant
par exemple les articles 'New'. Il ne m'ouvrait alors qu'une instance,
mais
n'envoyait jamais rien (bien que les mails se retourvent dasns les
'Elements
envoyés').
Comment puis-je refermer les instances ouvertes sans interrompre l'envoi
du
mail (chaque mail faisant 400ko, son envoi peut prendre quelques secondes)
?
Sub test()
Dim ObjMail As Object
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....."
Sujet = "La raison du message "
Texte = "Texte du Message "
'Si plusieurs fichiers : séparer par un point-virgule
FichiersJoints = "c:classeur1.xls" ' si requis
Destinataire = ""
Expediteur = ""
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
With ObjMail
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
'*********************************
.Item(cdoDispositionNotificationTo) = ""
.Item(cdoReturnReceiptTo) = ""
'*********************************
.Update
End With
.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
.Send
End With
End Sub
Sub test()
Dim ObjMail As Object
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....."
Sujet = "La raison du message "
Texte = "Texte du Message "
'Si plusieurs fichiers : séparer par un point-virgule
FichiersJoints = "c:classeur1.xls" ' si requis
Destinataire = "xxxxx@fournisseur"
Expediteur = "xxxxx@fournisseur"
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
With ObjMail
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
'*********************************
.Item(cdoDispositionNotificationTo) = "Adresse@fournisseur"
.Item(cdoReturnReceiptTo) = "Adresse@fournisseur"
'*********************************
.Update
End With
.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
.Send
End With
End Sub
Sub test()
Dim ObjMail As Object
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....."
Sujet = "La raison du message "
Texte = "Texte du Message "
'Si plusieurs fichiers : séparer par un point-virgule
FichiersJoints = "c:classeur1.xls" ' si requis
Destinataire = ""
Expediteur = ""
'Si plusieurs adresses : séparer par un point-virgule"
AutresDestinataires = ""
'****************************************
Set ObjMail = CreateObject("CDO.Message")
With ObjMail
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
'*********************************
.Item(cdoDispositionNotificationTo) = ""
.Item(cdoReturnReceiptTo) = ""
'*********************************
.Update
End With
.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
.Send
End With
End Sub