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 Sub

Dans 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

Rechercher des sujets similaires à "vba envoie mail pdf trie date"