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.Description

code 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 Variant
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:= _
   "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 Sub

merci 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édure

merci

Rechercher des sujets similaires à "envoi mail"