Bonjour à tous,
Je reviens vers vous car j'ai de nouveau des soucis avec du vba...
Je suis en train de réaliser un petit code tout simple pour récupérer des PJ dans des mails outlook, j'ai tout bien suivi la FAQ : https://excel.developpez.com/faq/?pa...ePiecesJointes
Cependant deux problèmes se posent :
- il ne boucle pas sur tous les mails, te en pas à pas cela semble fonctionner
- le olSpace.SendAndReceive ne marche oas, je pense parce qu'outlook s'ouvre en arrière plan...
Je mets le code que j'utilise ci dessous et suis d'ores et déjà reconnaissant à qui pourra m'aider!
Merci d'avance,
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 Dim olApp As Outlook.Application Dim olSpace As Outlook.Namespace Dim olInbox As Outlook.MAPIFolder Dim olFolder As Outlook.MAPIFolder Dim olFolder_ok As Outlook.MAPIFolder Dim olMail As Outlook.MailItem Dim olMailb As Outlook.MailItem Dim pceJointe As Outlook.Attachment Dim pj As Integer Set olApp = CreateObject("Outlook.Application") 'Nouvel outlook Set olSpace = olApp.GetNamespace("MAPI") Set olInbox = olSpace.Folders("ZIMBRA") 'Boite mail à adapter Set olFolder = olInbox.Folders("Boîte de Réception") 'Dossier Boite de réception Set olFolder_ok = olInbox.Folders("PJ_recu") 'Dossier à remplir olSpace.SendAndReceive False Application.ScreenUpdating = False 'On désactive la mise à jour de l'écran pour accélérer l'exécution du code For Each olMail In olFolder.Items 'pour chaque mail de la boite de réception If olMail.Subject Like ("Macro auto*") And olMail.Attachments.Count <> 0 Then For pj = 1 To olMail.Attachments.Count 'pour toutes les PJ du mail, on les enregistre dans "Attente import" si le nom correspond Set pceJointe = olMail.Attachments(pj) If pceJointe.Filename Like ("activite_*.csv") Then pceJointe.SaveAsFile ThisWorkbook.Path & "\Attente import\" & pceJointe If pceJointe.Filename Like ("event_#*.xlsx") Then pceJointe.SaveAsFile ThisWorkbook.Path & "\Attente import\" & pceJointe If pceJointe.Filename Like ("report_*.xlsx") Then pceJointe.SaveAsFile ThisWorkbook.Path & "\Attente import\" & pceJointe If pceJointe.Filename Like ("plan_*.xlsx") Then pceJointe.SaveAsFile ThisWorkbook.Path & "\Attente import\" & pceJointe Set pceJointe = Nothing Next pj 'piece jointe suivante 'olMail.Subject = "OK_" & olMail.Subject 'on ajoute OK à l'objet du mail olMail.Save 'on enregistre le mail olMail.Move olFolder_ok End If Next olMail 'mail suivant
Johan
Partager