VBA envoie mail PDF et trie par date
Bonjour,
j'ai créer à l'aide de forum un programme qui permet de filtrer un tableau par la date, et qui donc permet d'envoyer par mail les intervention de la veille au format PDF.
Le problème est de 1 que le programme ne marche pas toujours, quelque fois il surligne la ligne "kill chemin" et donc ne supprime pas le PDF. et d'autre fois il surligne la ligne " If .FilterMode Then .ShowAllData", il arrive aussi que le programme fonctionne sans problème.
Et le second problème est que j'aimerais que lorsque le mail à était envoyer le filtre soit enlevé et le tableau remit tels qu'au début.
je vous joint le programme et un fichier exemple.
cordialement
Option Explicit
Sub FiltrerLeTableau()
Dim MaDate As Date
Dim ShDonnees As Worksheet
Dim Chemin As String
Dim OutApp As Object, OutMail As Object
If Range("NombreLignes") = 0 Then
MsgBox "Aucunes données pour la date du " & Range("VeilleDuJour")
Exit Sub
End If
MaDate = CDate(Range("VeilleDuJour"))
Set ShDonnees = Worksheets("Résumer Mail")
Chemin = ThisWorkbook.Path & "\Résumé " & DateFichier(MaDate) & ".pdf"
With ShDonnees
If .FilterMode Then .ShowAllData
.ListObjects("Tableau1").Range.AutoFilter Field:=2, Operator:= _
xlFilterValues, Criteria2:=Array(2, Format(MaDate, "mm/dd/yyyy"))
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
Set OutApp = CreateObject("outlook.application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "t************fr"
.CC = ""
.Attachments.Add Chemin
.Subject = "Résumé des interventions du " & DateFichier(MaDate)
.Body = "Bonjour" & vbNewLine & vbNewLine & _
"Ci-joint un résumé des interventions d'hier" & vbNewLine & vbNewLine & _
"Cordialement"
.Display
End With
Kill Chemin
Set ShDonnees = Nothing
Set OutApp = Nothing: Set OutMail = Nothing
End Sub
Function DateFichier(ByVal MaDate2 As Date) As String
DateFichier = Format(Day(MaDate2), "00") & "-" & Format(Month(MaDate2), "00") & "-" & Year(MaDate2)
End Function
Bonjour,
Voici un essai d'adaptation du code avec l'ajout d'une ligne .autofilter pour défiltrer le tableau1.
Option Explicit
Sub FiltrerLeTableau()
Const sRetour$ = vbNewLine
Dim Chemin$, sBody$
Dim MaDate As Date
with thisworkbook
with .activesheet
If .Range("NombreLignes").value = 0 Then
MsgBox "Aucune donnée pour la date du " & Range("VeilleDuJour").value
Exit Sub
End If
MaDate = CDate(.Range("VeilleDuJour").value)
end with
Chemin = .Path & "\Résumé " & Format(MaDate, "YYYY-MM-DD") & ".pdf" 'mieux pour tri chrono des fichiers
with .Worksheets("Résumer Mail")
.ListObjects("Tableau1").Range.AutoFilter Field:=2, Operator:=xlFilterValues, Criteria2:=Array(2, Format(MaDate, "mm/dd/yyyy")) 'filtre sur la valeur 2 ?
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, IgnorePrintAreas:=False
.ListObjects("Tableau1").Range.AutoFilter Field:=2
end with
End With
with CreateObject("outlook.application")
with .CreateItem(0)
.To = "t************fr"
.Attachments.Add Chemin
.Subject = "Résumé des interventions du " & Format(MaDate, "DD/MM/YYYY")
sBody = "Bonjour"
sBody = sBody & sRetour & sRetour & "Ci-joint un résumé des interventions d'hier"
sBody = sBody & sRetour & sRetour & "Cordialement"
.body = sBody
.Display
End With
end with
Kill Chemin
End SubDans ce code, il conviendrait de confondre ou distinguer clairement les feuilles impliquées, à savoir Activesheet et Résumer Mail.
Pour ma part, je préconise une codification des fichiers au format AAAA-MM-JJ pour avoir un tri chronologique naturel.
Le bug sur la ligne kill Chemin pourrait-être venir du fait que vous ouvrez le PDF que vous tentez de supprimer ?
Si ce n'est pas le cas, préférez l'enregistrement du fichier dans un dossier précis dont vous pourrez supprimer le contenu disons une fois par an.
Cdlt,
Bonjour,
Merci de votre réponse le code fonctionne parfaitement bien.
cordialement