Code pompé d'internet A EDITER pour les répertoires.
Dans outlook -> Alt + F11 -> "ThisOutlookSession" -> Coller -> Ctrl + S -> Redémarrer
ATTENTION, pour le moment ce code ne fait QUE stocker les pièces jointes dans "C:\Temp\", et n'écrit RIEN dans aucun fichier Excel. Pour Excel, il faudra connaître la syntaxe exacte du contenue des mails, pour pouvoir extraire tes données.
ATTENTION, après avoir redémarré Outlook, essai d'exécuter manuellement le 'Private Sub Application_Startup(). Ce qui peut se passer, c'est que les macros ne soient pas activées, ou limitées en autorisation, auquel cas il faudra éditer la sécurité vis-à-vis des macros.
Private WithEvents Items As Outlook.Items
Private Sub Application_Startup()
Dim olApp As Outlook.Application
Dim objNS As Outlook.NameSpace
Set olApp = Outlook.Application
Set objNS = olApp.GetNamespace("MAPI")
' default local Inbox
Set Items = objNS.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub Items_ItemAdd(ByVal item As Object)
On Error GoTo ErrorHandler
Dim Msg As Outlook.MailItem
If TypeName(item) = "MailItem" Then
Set Msg = item
If Msg.SenderEmailAddress = "candidature@monsiteweb.com" And Msg.Subject = "Recrutement" Then
'ajouter le mail à la BDD
saveAttachtoDisk (Msg)
'CODE POUR ENVOYER LES DONNEES VERS EXCEL, DEPEND DE LA SYNTAXE DES MAILS
End If
End If
ProgramExit:
Exit Sub
ErrorHandler:
MsgBox Err.Number & " - " & Err.Description
Resume ProgramExit
End Sub
Public Sub saveAttachtoDisk(itm As Outlook.MailItem)
Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim dateFormat
dateFormat = Format(Now, "yyyy-mm-dd H-mm")
saveFolder = "C:\Temp\"
For Each objAtt In itm.Attachments
objAtt.SaveAsFile saveFolder & "\" & dateFormat & objAtt.DisplayName
Set objAtt = Nothing
Next
End Sub
Sources :
http://stackoverflow.com/questions/15531093/outlook-vba-code-to-save-attachments-to-a-folder-and-rename-them
http://stackoverflow.com/questions/11263483/how-do-i-trigger-a-macro-to-run-after-a-new-mail-is-received-in-outlook