Bonjour

J'ai crée un code qui va chercher tout les mail d'une regle et qui en extrait les piece jointe dans un dossier. Voila le code (il fonctionne parfaitement ).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Public Sub TransfertPJ()
 
    'Création de l'objet Outlook
    Set objoutlook = CreateObject("Outlook.application")
    'Récupération de l'espace de nom d'outlook
    Set olns = objoutlook.GetNamespace("MAPI")
    'Récupération du répertoire "boite de réception" par défault
    Set fld = olns.GetDefaultFolder(olFolderInbox)
    ' Initialisation du reperetoire de sauvegarde
    ' ne pas oublier l'anti-slash à la fin du repertoire
    Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\"
    'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur
    message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = ""
 
    ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception.
    ' Pour adresser un dossier dans la boite de réception on pourrait utiliser :
    ' fld.Folders("Nom_Du_Dossier").Items
For Each mItem In fld.Folders("Confirmation Oddo").Items
 
    For Each att In mItem.Attachments
    If att.Type = olByValue Then
 
    ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant.
 
    NomDeFichier = att.Filename
    NomDeFichierSurDisque = NomDeFichier
    att.SaveAsFile Repertoire & NomDeFichierSurDisque
 
 
 
 
 
 
    End If
    Next
    Next
 
 
 
 
    Exit Sub
 
    End Sub
Mais j'aimerais bien qu'il ouvre d'abord toute les pieces jointes et qu'il enregistre dans le chemin uniquement si en celllule C10, il y a la date de la veille.

Pour cela j'ai crée un fonction veille (et qui prend vendredi si lundi est la veille...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Private Function Veille() As Date
Dim d As Byte
 
d = DatePart("w", Date, vbSunday)                'Si Date est Dimanche ou Lundi, on prend Vendredi comme étant la veille. 'Sinon, on prend j-1
Veille = Date - IIf(d <= 2, d + 1, 1)
End Function

Je pense qu'il faudrait intercaller à partir de là
Code : Sélectionner tout - Visualiser dans une fenêtre à part
For Each att In mItem.Attachments
du code pour ouvrir les PJ et de les enregistrer si Range("C10").value = Veille mais je ne vois pas comment faire ça exactement.


Quelq'un pourrait me donner un coup de main?