Macro excel envoi mail avec fichier joint [Résolu/Fermé]

Signaler
-
 Utilisateur anonyme -
Bonjour,

J'aimerai envoyer automatiquement une feuille d'un fichier Excel via Outlook.
J'utilise la macro suivante que j'ai récupérée d'une autre discussion.

Sub SendMail()
' Copy the sheet(1)
ThisWorkbook.Sheets(1).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=Array("toto@ss.ch", "xxx@sss.ch"), Subject:="Test" & Format(Date, "dd/mmm/yy")
.Close SaveChanges:=False
End With

J'ai une liste de destinataire qui varie selon la feuille, j'ai donc essayé de modifier cette macro ainsi sachant que l'email du destinataire est inscrit sur la feuille 1 cellule M1 :

Function SendMail()
Dim y As String
Dim x As Integer
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
' Copy the sheet(1)
ThisWorkbook.Sheets(x).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:="y", Subject:="test" & Format(Date, "dd/mmm/yy")
.Close SaveChanges:=False
End With
' Subject:=Range("Feuil1!B1").Value & " " & Range("Feuil1!A1").Value
End Function


Mais ça ne marche pas...

Pourriez-vous m'indiquer ce que je dois modifier s'il vous plaît.

Merci d'avance.

Elsie

4 réponses


Bonjour,

Cette macro marche parfaitement, j'ai du faire une erreur hier.

Private Sub Bouton6_QuandClic()
Dim y, chemin, nom As String
Dim x As Integer
Dim ol As Object, myItem As Object
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
nom = "contrôle " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application")
Set myItem = ol.CreateItem(olMailItem)
myItem.To = y
myItem.Subject = "envoi d'un fichier attaché"
myItem.Body = "Bonjour, " & Chr(10) & "Vous trouverez ci-joint le tableau de Contrôle pour votre service. " & Chr(10) & "Merci de bien vouloir me faire un retour avec vos corrections. " & Chr(10) & "Cordialement, " & Chr(10) & "Elsie "
myItem.Attachments.Add ActiveWorkbook.FullName
myItem.Send
Set ol = Nothing
ActiveWorkbook.Close
End Sub

Merci beaucoup pour ton aide !!
Elsie
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56897 internautes nous ont dit merci ce mois-ci


Re,

Pour envoyer ma feuille j'utilise cette macro, que faut `il modifier afin de pouvoir ajouter un texte avant d'envoyer le mail.

Function SendMail()
Dim y As String
Dim x As Integer
y = Sheets(1).Range("M1").Value
x = Sheets(1).Range("K1").Value
' Copy the sheet(1)
ThisWorkbook.Sheets(x).Copy
' Send Email
With ActiveWorkbook
.SendMail Recipients:=y, Subject:="test" & Format(Date, "dd/mmm/yy")
.Close SaveChanges:=False
End With
End Function


Merci d'avance

Elsie
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462
Mais oui bien sur (les modifs en gras) :
Private Sub Bouton6_QuandClic() 
Dim y, chemin, nom As String 
Dim x As Integer 
Dim ol As Object, myItem As Object 
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value 
x = Sheets(1).Range("K1").Value 
nom = "contrôle " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application") 
Set myItem = ol.CreateItem(olMailItem) 
myItem.To = y 
myItem.Subject = "envoi d'un fichier attaché" 
myItem.Body = "ton corp de message" 
myItem.Attachments.Add ActiveWorkbook.FullName
myItem.Send 
Set ol = Nothing 
ActiveWorkbook.Close
End Sub
Utilisateur anonyme
Sans vouloir abuser...

Je voudrai que mon message soit de cette forme :

Bonjour,

Vous trouverez ci-joint le tableau de Contrôle pour votre service.
Merci de bien vouloir me faire un retour avec vos corrections.

Cordialement,

Elsie

J'ai mis ceci :

"Bonjour, " & "" & "Vous trouverez ci-joint le tableau de Contrôle pour votre service. " & "" _
& "Merci de bien vouloir me faire un retour avec vos corrections. " & "" & "Cordialement, " & "" & "Elsie "


Mais ça me met tout à la suite. Comme ça : Bonjour,Vous trouverez ci-joint le tableau de Contrôle pour votre service.Merci de bien vouloir me faire un retour avec vos corrections.Cordialement, Elsie


Il ya moyen de garder la 1er forme.

Merci d'avance !!!!
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462
Sans conviction essaye ceci :
 & Chr(10) & 

Private Sub Bouton6_QuandClic() 
Dim y, chemin, nom As String 
Dim x As Integer 
Dim ol As Object, myItem As Object 
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value 
x = Sheets(1).Range("K1").Value 
nom = "contrôle " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application") 
Set myItem = ol.CreateItem(olMailItem) 
myItem.To = y 
myItem.Subject = "envoi d'un fichier attaché" 
myItem.Body = "Bonjour, " & Chr(10) & "Vous trouverez ci-joint le tableau de Contrôle pour votre service. " & Chr(10) & "Merci de bien vouloir me faire un retour avec vos corrections. " & Chr(10) & "Cordialement, " & Chr(10) & "Elsie " 
myItem.Attachments.Add ActiveWorkbook.FullName
myItem.Send 
Set ol = Nothing 
ActiveWorkbook.Close
End Sub
Utilisateur anonyme
Ça me met ceci en rouge : & Chr(10) &

Erreur de compilation. Attendu numéro de ligne ou étiquette ou instruction ou fin d'instruction
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462
Oui et bien là je suis autant bloqué que toi...
Je peux te suggérer des pistes, mais sans aucune certitude...
1- remplacer & Chr(10) & par "%0A" (ou %OA ou & "%OA" & ou & %OA &) Voir ici
2- remplacer & Chr(10) & par & vbCrLf &
ou encore utiliser le code html donné plus haut
Private Sub Bouton6_QuandClic() 
Dim y, chemin, nom As String 
Dim x As Integer 
Dim ol As Object, myItem As Object 
chemin = ActiveWorkbook.Path
y = Sheets(1).Range("M1").Value 
x = Sheets(1).Range("K1").Value 
nom = "contrôle " & Sheets(x).Name
ThisWorkbook.Sheets(x).Copy
ActiveWorkbook.SaveAs chemin & "\" & nom
Set ol = CreateObject("outlook.application") 
Set myItem = ol.CreateItem(olMailItem) 
With myitem
.To = y 
.Subject = "envoi d'un fichier attaché" 
.BodyFormat = olFormatHTML
.HTMLBody = "<HTML><body>Bonjour,<p>" _
        & "Vous trouverez ci-joint le tableau de Contrôle pour votre service.  "  _
        & "Merci de bien vouloir me faire un retour avec vos corrections. <p>" _
        & "Cordialement, "<p>" & _
        "Elsie "</b></body><HTML>"
.Attachments.Add ActiveWorkbook.FullName
.Send 
End With
Set ol = Nothing 
ActiveWorkbook.Close
End Sub
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462
re-
y est une variable. Donc dans :
.SendMail Recipients:="y", Subject:="test" & Format(Date, "dd/mmm/yy")  

il ne faut pas le mettre entre guillemets. Comme ceci :
.SendMail Recipients:=y, Subject:="test" & Format(Date, "dd/mmm/yy")  


Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --

Merci !!

Dites moi il y a moyen pour que la fenêtre "un programme essaye d'envoyer un message électronique en votre nom ...." ne s'affiche plus ?
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462
Là je ne sais pas. Il s'agit d'une alerte Windows...
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 462