Enregistrer pièce jointe

Bonjour Forum, Baboutz

pour suite à ce sujet:

https://forum.excel-pratique.com/office/enregistrer-piece-jointe-151196

Baboutz m'avait concocté un petit code que j'avais un peu améliorer, qui permettait d'enregistrer automatiquement des pièces jointes avec extensions prédéfinis dans des dossier associés à la date d'envoi du courriel.

Exemple: courriel recu le 2 février 2022, enregistre automatiquement dans le dossier 2022/02-Février

par contre, je recois des états de compte pour des factures du mois précédent, j'aimerais pouvoir avoir un autre option (ca peut être un autre userform) qui ferait la même procédure, mais dans le mois précédent celle du courriel.

Exemple: État de compte du mois de février recu le 03-03-2022 .. enregistrer la pièce jointe dans 02-Février

le userform est seulement une listbox avec un bouton

La variable Mois étant une STRING, je ne sais pas trop comment m'y prendre pour lui faire comprendre .... -1

j'ai essayé de transformer la variable mois en INTEGER, enlever les noms de mois, et lui dire -1 .. ca ne fonctionne pas, et il faudrait aussi contrôler pour le mois de janvier...

EDIT: J'ai crée 2 combobox pré-rempli avec les bonnes informations, modifiables au besoin.

compta

Merci!

Option Explicit

'Déclaration des constantes publiques
Const path As String = "D:\Chemin\Comptabilité\"

'Déclaration des variables publiques
Dim meMail As Variant
Dim Annee As Integer
Dim Mois As String

Private Sub CommandButton_Validation_Click()

    'Déclaration des variables
    Dim i As Byte

    'Enregistrement de chaque PJ sélectionné
    For i = 0 To ListBox_PJ.ListCount - 1
        If ListBox_PJ.Selected(i) = True Then
            If Not Len(Dir(path & Annee & "\" & Mois & "\" & ListBox_PJ.List(i), vbDirectory)) > 0 Then
                meMail.Attachments(ListBox_PJ.List(i)).SaveAsFile (path & Annee & "\" & Mois & "\" & ListBox_PJ.List(i))
            Else
                Kill path & Annee & "\" & Mois & "\" & ListBox_PJ.List(i)
                meMail.Attachments(ListBox_PJ.List(i)).SaveAsFile (path & Annee & "\" & Mois & "\" & ListBox_PJ.List(i))
            End If
        End If
    Next i

    'Fermeture de l'USF
    Unload Me

End Sub

Private Sub Userform_Initialize()

    'Déclaration des variables
    Dim Atmt As Variant, r As Byte

    'Attribution de l'email à traiter à la variable objet meMail
    Set meMail = Application.ActiveExplorer.selection.Item(1)

    'Récupération des variables mois et année de récéption du mail
    Mois = Choose(Month(meMail.CreationTime), "01-Janvier", "02-Février", "03-Mars", "04-Avril", "05-Mai", "06-Juin", "07-Juillet", "08-Août", "09-Septembre", "10-Octobre", "11-Novembre", "12-Décembre")
    Annee = Year(meMail.CreationTime)

    'Création des dossier année et mois si inexistant
    If Not Len(Dir(path & Annee, vbDirectory)) > 0 Then MkDir (path & Annee & "\")
    If Not Len(Dir(path & Annee & "\" & Mois, vbDirectory)) > 0 Then MkDir (path & Annee & "\" & Mois & "\")

    'Récupération de toutes les pièces jointes
    For Each Atmt In meMail.Attachments
             If Not Atmt.fileName Like "*image*" And Not Atmt.fileName Like "*.gif" And Not Atmt.fileName Like "*.htm*" And Not Atmt.fileName Like "*.txt" Then ListBox_PJ.AddItem Atmt.fileName
                 Next Atmt

        'Sélection automatique de tous les pièces jointes
     For r = 0 To ListBox_PJ.ListCount - 1
ListBox_PJ.Selected(r) = True
 Next r

End Sub

Private Sub Userform_terminate()

    'Vide la variable objet -> Allège la mémoire
    Set meMail = Nothing

End Sub
Rechercher des sujets similaires à "enregistrer piece jointe"