OVH Cloud OVH Cloud

envoi mail avec fichiers attachés

3 réponses
Avatar
André Riberi
Bonjour,
J'essaye d'envoyer automatiquement un mail à une liste: pas de problème avec
le code ci-dessous (adapté d'un userform de cd-mail, merci à son créateur);
je fais en sorte que le mail soit envoyé individuellement à chaque
destinataire.
Il faudrait maintenant que les fichiers attachés soient tous attachés dans
chaque envoi, qu'il y en ait 0 ou plusieurs. Ils sont dans Listbox1, et je
pensais que la boucle For J to... pourrait le faire, mais nenni, les
messages partent sans fichier attaché...
Voici le code:

Private Sub CommandButton3_Click()
Dim iMsg As Object
Dim iConf As Object
Dim top As String
Dim i As Integer
Dim j As Integer

For i = 1 To (ListBox2.ListCount)
top = (ListBox2.List(i - 1, 0))
Application.ScreenUpdating = False
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
With iMsg
Set .Configuration = iConf
.To = top
.CC = ""
.BCC = ""
.From = TextBox1.Value
.Subject = TextBox4.Value
.TextBody = TextBox3.Value
For j = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(j - 1, 0))
Next j
.Send
End With
Next
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Merci pour votre aide
André

3 réponses

Avatar
michdenis
Bonjour André,

Pour ajouter un fichier joint, tu ne dois pas seulement identifier
le fichier comme dans cette ligne de code :
.AddAttachment (ListBox1.List(j - 1, 0))

mais spécifier le chemin complet où se retrouve le fichier....

Exemple :
dim Chemin as string
Chemin = "c:Excel"

.AddAttachment chemin & (ListBox1.List(j - 1, 0))


Salutations!


"André Riberi" a écrit dans le message de news: 44140de4$1$25812$
Bonjour,
J'essaye d'envoyer automatiquement un mail à une liste: pas de problème avec
le code ci-dessous (adapté d'un userform de cd-mail, merci à son créateur);
je fais en sorte que le mail soit envoyé individuellement à chaque
destinataire.
Il faudrait maintenant que les fichiers attachés soient tous attachés dans
chaque envoi, qu'il y en ait 0 ou plusieurs. Ils sont dans Listbox1, et je
pensais que la boucle For J to... pourrait le faire, mais nenni, les
messages partent sans fichier attaché...
Voici le code:

Private Sub CommandButton3_Click()
Dim iMsg As Object
Dim iConf As Object
Dim top As String
Dim i As Integer
Dim j As Integer

For i = 1 To (ListBox2.ListCount)
top = (ListBox2.List(i - 1, 0))
Application.ScreenUpdating = False
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
With iMsg
Set .Configuration = iConf
.To = top
.CC = ""
.BCC = ""
.From = TextBox1.Value
.Subject = TextBox4.Value
.TextBody = TextBox3.Value
For j = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(j - 1, 0))
Next j
.Send
End With
Next
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Merci pour votre aide
André
Avatar
André Riberi
Merci Michdenis,
Mais dans la version "originale", il y a bien ce bout de code:

For i = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(i - 1, 0))
Next

et c'est bien le chemin des fichiers complet qui se trouve dans Listbox1
(par exemple C:exceldoc1.txt)
j'ai essayé aussi de mettre directement le chemin:
.AddAttachment "c:exceldoc1.txt"
mais le fichier n'est toujours pas attaché...
y a-t-il un problème de boucle ?


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

Bonjour André,

Pour ajouter un fichier joint, tu ne dois pas seulement identifier
le fichier comme dans cette ligne de code :
.AddAttachment (ListBox1.List(j - 1, 0))

mais spécifier le chemin complet où se retrouve le fichier....

Exemple :
dim Chemin as string
Chemin = "c:Excel"

.AddAttachment chemin & (ListBox1.List(j - 1, 0))


Salutations!


"André Riberi" a écrit dans le message de news:
44140de4$1$25812$

Bonjour,
J'essaye d'envoyer automatiquement un mail à une liste: pas de problème
avec

le code ci-dessous (adapté d'un userform de cd-mail, merci à son
créateur);

je fais en sorte que le mail soit envoyé individuellement à chaque
destinataire.
Il faudrait maintenant que les fichiers attachés soient tous attachés dans
chaque envoi, qu'il y en ait 0 ou plusieurs. Ils sont dans Listbox1, et je
pensais que la boucle For J to... pourrait le faire, mais nenni, les
messages partent sans fichier attaché...
Voici le code:

Private Sub CommandButton3_Click()
Dim iMsg As Object
Dim iConf As Object
Dim top As String
Dim i As Integer
Dim j As Integer

For i = 1 To (ListBox2.ListCount)
top = (ListBox2.List(i - 1, 0))
Application.ScreenUpdating = False
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
With iMsg
Set .Configuration = iConf
.To = top
.CC = ""
.BCC = ""
.From = TextBox1.Value
.Subject = TextBox4.Value
.TextBody = TextBox3.Value
For j = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(j - 1, 0))
Next j
.Send
End With
Next
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Merci pour votre aide
André







Avatar
michdenis
Bonjour André,

J'ai supposé qu'une listbox existant en Feuil3

'----------------------------------
Sub EnvoiMail()
Dim Destinataire As String, Expéditeur As String
Dim Sujet As String
Dim TexteMessage As String, ServeurSMTP As String

'Paramètres à renseigner avec des infos valides :
Expéditeur = ""
Destinataire = ""
Sujet = "Test envoi"
TexteMessage = "Ceci est un test d'envoi depuis Excel"
'à définir ton smtp
ServeurSMTP = "smtp.fournisseur"

'Construction et envoi
With CreateObject("CDO.Message")
.From = Expéditeur
.To = Destinataire
.Subject = Sujet
.TextBody = TexteMessage
For j = 0 To Feuil3.ListBox1.ListCount - 1
.AddAttachment Feuil3.ListBox1.List(j, 0)
Next j
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
'----------------------------------------



Salutations!




"André Riberi" a écrit dans le message de news: 44144d34$0$25827$
Merci Michdenis,
Mais dans la version "originale", il y a bien ce bout de code:

For i = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(i - 1, 0))
Next

et c'est bien le chemin des fichiers complet qui se trouve dans Listbox1
(par exemple C:exceldoc1.txt)
j'ai essayé aussi de mettre directement le chemin:
.AddAttachment "c:exceldoc1.txt"
mais le fichier n'est toujours pas attaché...
y a-t-il un problème de boucle ?


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

Bonjour André,

Pour ajouter un fichier joint, tu ne dois pas seulement identifier
le fichier comme dans cette ligne de code :
.AddAttachment (ListBox1.List(j - 1, 0))

mais spécifier le chemin complet où se retrouve le fichier....

Exemple :
dim Chemin as string
Chemin = "c:Excel"

.AddAttachment chemin & (ListBox1.List(j - 1, 0))


Salutations!


"André Riberi" a écrit dans le message de news:
44140de4$1$25812$

Bonjour,
J'essaye d'envoyer automatiquement un mail à une liste: pas de problème
avec

le code ci-dessous (adapté d'un userform de cd-mail, merci à son
créateur);

je fais en sorte que le mail soit envoyé individuellement à chaque
destinataire.
Il faudrait maintenant que les fichiers attachés soient tous attachés dans
chaque envoi, qu'il y en ait 0 ou plusieurs. Ils sont dans Listbox1, et je
pensais que la boucle For J to... pourrait le faire, mais nenni, les
messages partent sans fichier attaché...
Voici le code:

Private Sub CommandButton3_Click()
Dim iMsg As Object
Dim iConf As Object
Dim top As String
Dim i As Integer
Dim j As Integer

For i = 1 To (ListBox2.ListCount)
top = (ListBox2.List(i - 1, 0))
Application.ScreenUpdating = False
Set iMsg = CreateObject("CDO.Message")
Set iConf = CreateObject("CDO.Configuration")
With iMsg
Set .Configuration = iConf
.To = top
.CC = ""
.BCC = ""
.From = TextBox1.Value
.Subject = TextBox4.Value
.TextBody = TextBox3.Value
For j = 1 To (ListBox1.ListCount)
.AddAttachment (ListBox1.List(j - 1, 0))
Next j
.Send
End With
Next
Set iMsg = Nothing
Set iConf = Nothing
Application.ScreenUpdating = True
End Sub

Merci pour votre aide
André