VBA Excel et Outlook

C@thy

XLDnaute Barbatruc
Bonjour le forum,

j'ai écrit une macro excel qui marche super bien et traite les e-mails reçus,
remplit un tableau excel et archive les e-mails traités dans un sous-répertoire
la question que je me pose est la suivante :
est-il possible sous outlook de faire l'équivalent d'une macro événementielle
(à chaque fois qu'un e-mail arrive)?
Cela éviterait à l'utilisateur d'avoir à ouvrir Excel pour lancer la macro.

Merci pour vos lumières.

Edit :

ceci, dans un module outlook, fonctionne, mais il faut lancer la macro...
Code:
Sub Application_NewMail()
    Dim myOlApp As New Outlook.Application
    Dim myNamespace As Outlook.NameSpace
    Dim myInbox As Outlook.MAPIFolder
    Dim myDestFolder As Outlook.MAPIFolder
    Dim myItems As Outlook.Items
    Dim myItem As Object
    Set myNamespace = myOlApp.GetNamespace("MAPI")
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items
    Set myDestFolder = myInbox.Folders("Temp")
    Dim strName As String
    
    For Each myItem In myInbox.Items
        strName = myItem.EntryID
        myItem.SaveAs "C:\temp\" & strName & ".txt", olTXT
        myItem.Move myDestFolder
        Set myItem = myItems.GetNext
        
    Next myItem
End Sub
ceci ne fonctionne pas : (pour archiver le dernier reçu)
Code:
Set myItems = myInbox.Items(1)
Bises

C@thy
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : VBA Excel et Outlook

J'ai trouvé!

Il faut la mettre dans le module ThisOutlookSession et rajouter Private devant Sub,

reste à trouver comment copier 1 seul message (celui qui vient d'arriver....)

Merci à vous... j'avance...

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : VBA Excel et Outlook

RESOLU

Ceci fonctionne :
Code:
Sub test()
    Dim myOlApp As New Outlook.Application
    Dim myNamespace As Outlook.NameSpace
    Dim myInbox As Outlook.MAPIFolder
    Dim myDestFolder As Outlook.MAPIFolder
    Dim myItems As Outlook.Items
  
    Set myNamespace = myOlApp.GetNamespace("MAPI")
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set myItems = myInbox.Items
      
    i = myInbox.Items.Count 'dernier message
    MsgBox myInbox.Items(i).Subject

End Sub

j'adapte avec mon traitement...

Bizzz

C@thy
 

Discussions similaires

Réponses
7
Affichages
538
Réponses
14
Affichages
861

Membres actuellement en ligne

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA