Envoi par mail
en m'inspirant de tous ce que j'ai pus lire a droite a gauche j'ai ecrit le code suivant :
Sub envoyer_Click() 'envoie de mail
Fac_Dev = Sheets("facture").Range("I1")
Fac_Num = Sheets("facture").Range("J1")
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("facture").Range("$B$1:J53").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & Fac_Dev & Fac_Num & ".PDF"
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "ci joint votres" & Fac_Dev & Fac_Num
objMessage.From = ""
objMessage.To = Sheets("facture").Range("mail") 'Email du destinataire
objMessage.TextBody = Sheets("facture").Range("Q23") & vbCrLf & Range("Q24") & vbCrLf & Range("Q25")
piece_jointe = ActiveWorkbook.Path & "\" & Fac_Dev & Fac_Num & ".PDF" ' document joint
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Range("Q27") ' " Q27 = smtp.orange.fr" ' "Q28 = smtp.numericable.fr" 'A modifier
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe
objMessage.Send
MsgBox "Le mail a été bien envoyé !"
'la feuille PDF créée est est supprimée après l'envoi
Kill ActiveWorkbook.Path & "\" & Fac_Dev & Fac_Num & ".PDF" 'on suprime le la pièce jointe
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Descriptioncode qui fait encore des erreurs bien entendu, pour le moment il s'arrête a ( Set objMessage ) car je n'est pas mis le dim et pour cause la j'ai un doute objmessage je le met avec As quoi il y a telement de choix dans la liste que je ne sait lequel choisir et si je mes long ou string ca plante merci d'avance pour vos suggestions .
cedcyr
Edit Dan : Modifié titre du sujet
pour avancer dans mon petit bug un truc que je ne comprend pas !
j'ai finalement pris comme propriété de varriable pour objmessage = as object et pour piece_jointe = as variant autrement dit pour la seconde je ne me ssuis pas casser le hum! ca marche a une petite chose près ja paut envoyer le message et il est comme je le souhaite, avec sa piece jointe en pdf avec le bon nom et tous mais si je clique une deusième fois sur le bouton envoyer le message suivant apparait "le document n'a pa été enregistré" il il ne repare pas une deusième fois vous me dirait cela n'est pas grave car je l'ai deja envoyer mais quand même c'est un peut bizzard car je ne lui est jamais demander de ne pas le réecpedier si il est déja partis une fois
une des grandes âmes de ce forum aurais t'elle une explication ?
voici le code modifier
Option Explicit
Dim x As Long, Fac_Dev As String, Fac_Num As String, i As Long, k, n, NFacture As Long
Dim Xonglet, Xcel, u, numero As String, reponse As String, Fac As Long, Com As Long, Dev As Long, objMessage As Object, piece_jointe As VariantSub envoyer_Click() 'envoie de mail
Fac_Dev = Sheets("facture").Range("I1")
Fac_Num = Sheets("facture").Range("J1")
Dim messageHTML
On Error GoTo errorHandler
'on cré le fichier PDFdans le même dossier que le fichier source
Sheets("facture").Range("$B$1:J53").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\christophe\Documents\faturation clément\mail\" & Fac_Dev & Fac_Num & ".PDF" ' fichier pdf provisoir
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "ci joint votres : " & Fac_Dev & Fac_Num 'objet du message
objMessage.From = "xxxx@xxxx.xx" 'mail de l'expéditeur
objMessage.To = Sheets("facture").Range("mail") 'mail du destinataire
objMessage.TextBody = Sheets("facture").Range("Q23") & vbCrLf & Range("Q24") & vbCrLf & Range("Q25") ' texte du message
piece_jointe = "C:\Users\christophe\Documents\faturation clément\mail\" & Fac_Dev & Fac_Num & ".PDF" ' pièce jointe
messageHTML = "Ceci est un message en HTML"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Range("Q27") ' " Q27 = smtp.orange.fr" "Q28 = smtp.numericable.fr" ' a modifier en fonction de la messagerie de l'expéditeur
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objMessage.Configuration.Fields.Update
objMessage.AddAttachment (piece_jointe) 'On ajoute la piéce jointe
objMessage.Send
MsgBox "Le mail a été bien envoyé !"
'la feuille PDF créée est est supprimée après l'envoi
'si erreur on sort de la procédure
Exit Sub
errorHandler:
'description de l'erreur survenue
MsgBox Err.Description
End Submerci d'avance
cedcyr
ha 'joubliais de préciser si je crée un nouveau document il peut partir c'est seulement si je garde dans ma feuille facture le même document qui ne repart pas
merci
cedcyr
toujours dans le comportement de ma macro je crois que cela tien au fait que la piece jointe cree n'est mas supprimer juste apres l'envoie mais a la fermeture du classeur selement car une fois envoyer si je vais dans mon dossier temp (mail) le doc est la et il il est verouiller et des-que le ferme excel il est supprimer du fait si je reprend le meme je peut a nouveau l'envoyer une fois
coment faire pour qu'il soit supprimer aussitôt apres envoie
j'ai mis le code suivant mais il ne le supprime pas de suite!
Kill "C:\Users\christophe\Documents\faturation clément\mail\" & Fac_Dev & Fac_Num & ".PDF" 'on suprime le la pièce jointe
'si erreur on sort de la procéduremerci