Recuperation des mails depuis Excel

Bonjour,

Je souhaite faire une macro dans Excel qui me permet de récupérer le sujet et la date des mails dans Outlook.

J’ai une boite partagée dans Outlook qui s’appelle X et dedans j’ai un dossier qui s’appelle courrier traités.

Je veux uniquement récupérer les mails dans ce dossier.

Merci pour votre aide.

Salut,

Une début de piste, je n'ai pas de boite partagé pour faire le test....

Sub LireMessages()

Dim olapp As New Outlook.Application
Dim ns As Object, Dossier As Object
Dim OlExp As Object
Dim i As Object
Dim mybody() As String
Dim fromsender As String

Set ns = olapp.GetNamespace("MAPI")
Set Dossier = ns.GetDefaultFolder(olFolderInbox).Folders("Courriers Traités")  'Dans la boite de reception dans le repertoire Courriers Traités
b = 2
For Each i In Dossier.Items
    Cells(b, 1) = i.Subject
    Cells(b, 2) = i.ReceivedTime
    b = b + 1
Next i
End Sub

Damien

Merci, cela m'aide beaucoup.

ce code va chercher dans ma boite perso ,

Imagine que la boite en question est x@gmail.com et le dossier courrier traités est l'un des dossiers.

Que dois-je maitre à la place de olFolderInbox

Merci infiniment

Bigdams a écrit :

Salut,

Une début de piste, je n'ai pas de boite partagé pour faire le test....

Sub LireMessages()

Dim olapp As New Outlook.Application
Dim ns As Object, Dossier As Object
Dim OlExp As Object
Dim i As Object
Dim mybody() As String
Dim fromsender As String

Set ns = olapp.GetNamespace("MAPI")
Set Dossier = ns.GetDefaultFolder(olFolderInbox).Folders("Courriers Traités")  'Dans la boite de reception dans le repertoire Courriers Traités
b = 2
For Each i In Dossier.Items
    Cells(b, 1) = i.Subject
    Cells(b, 2) = i.ReceivedTime
    b = b + 1
Next i
End Sub

Damien

Re,

J'ai attaché un autre PST avec le nom Prof2008 et je regarde dans le repertoire PRODUITS.

Sub traitement()
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.Namespace
Dim myDestFolder As Outlook.MAPIFolder
Dim myItems As Outlook.Items
Dim myItem As Object

  Set myNameSpace = myOlApp.GetNamespace("MAPI")
  Set myDestFolder = myNameSpace.Folders("PROF2008").Folders("PRODUITS")
  b = 1

 For Each I In myDestFolder.Items

    Cells(b, 1) = I.Subject
    Cells(b, 2) = I.ReceivedTime
    b = b + 1

  Next

End Sub

Dis moi si ça t'aide.

Damien

Merci pour ta réponse, je joins une image des dossiers d’Outlook.

En fait j’ai deux boites, ma boite personnelle MK et la Boite partagée mag.

Le dossier 02 – Courrier traités ce trouve sous mag. J’arrive à importer les dossiers dans MK mais pour mag j’ai toujours des problèmes.

Merci.

test

Bonjour ,

le dossier en question n'est pas dans la boite par default de Outlook, si je change les propriétés de Outlook pour qu'elle soit la boite par default cela fonctionne et je peux avoir le sujet et la date des mails dans ce dossier dans mon fichier Excel.

Donc voila comme il existe deux boites , comment je peux avoir des éléments de la boite qui n'est pas la boite par défault dans Outlook ???

Je pense qu'il faut changer le code à ce niveau :

Set Dossier = ns.GetDefaultFolder(olFolderInbox) . . .

Merci

Salut,

J'ai un peu de mal a reproduire,

Peux tu essayer le code suivant ? Et me dire si tu trouve le repertoire que tu souhates ? (Dans la colonne A)

Sub List_All_NameSpace_Folders()
    Dim myNS As Namespace
    Dim myFolder As MAPIFolder
    Dim mySubfolder As MAPIFolder
    Dim i As Double
    i = 1
    strFolderList = "Your Outlook NameSpace contains these folders:"

    Set myNS = Outlook.Application.GetNamespace("MAPI")
    With myNS
        For Each myFolder In myNS.Folders
            strFolderList = strFolderList & myFolder.Name & vbCr
            For Each mySubfolder In myFolder.Folders
                Cells(i, 1) = mySubfolder.Name
                i = i + 1
            Next mySubfolder
        Next myFolder
    End With
End Sub

Damien

Bonjour,

Merci pour ta réponse,

Ce code envoi le nom de tous les dossiers présent dans Outlook dans Excel.

Maintenant pour que je puisse récupérer les mails dans le dossier 02 – courriers traités que puis-je faire?

Je rappelle que ce dossier est dans un compte qui n’est pas le compte par défaut sur mon Outlook.

Merci Beaucoup.

Re,

Tu trouve le repertoire que tu souhaites dans la feuille Excel ?

Si oui, alors c'est simple

Damien

Re,

Oui , je l'ai , mais je vois pas trop ce que je peux faire avec ca ?

cdt,

Salut,

Voici un code qui va regarder tout les repertoires et dès que l'on a celui que l'on souhaite. : on lance le traitement.

Il ne faut pas qu'il y ait un autre repertoire avec le même nom.

Ne pas oublier de mettre la reference Microsoft Outlook XX.X Object Library

Sub Lancement()
List_All_NameSpace_Folders "02 - Courrier traités"
End Sub
Function List_All_NameSpace_Folders(repertoire As String)
    Dim myNS As Namespace
    Dim myFolder As MAPIFolder
    Dim mySubfolder As MAPIFolder
    Dim i As Double
    i = 1

    Set myNS = Outlook.Application.GetNamespace("MAPI")
    With myNS
        For Each myFolder In myNS.Folders
           For Each mySubfolder In myFolder.Folders
                If repertoire = mySubfolder.Name Then
                          traitement mySubfolder
                Exit Function
                End If
            Next mySubfolder
        Next myFolder
    End With
End Function
Function traitement(ByRef myDestFolder As Outlook.MAPIFolder)
Dim myOlApp As New Outlook.Application
Dim myNameSpace As Outlook.Namespace
'Dim myDestFolder As Outlook.MAPIFolder
Dim myItems As Outlook.Items
Dim myItem As Object

  Set myNameSpace = myOlApp.GetNamespace("MAPI")
  'Set myDestFolder = myNameSpace.Folders("PROF2008").Folders("PRODUITS")
  b = 1

 For Each i In myDestFolder.Items

    Cells(b, 1) = i.Subject
    Cells(b, 2) = i.ReceivedTime
    b = b + 1
  Next
End Function

Génial Merci Ça fonctionne,

Pour la ligne Cells(b, 2) = i.ReceivedTime il mets une erreur

Si je le supprime cela fonction et renvoie tous les sujets, pour la date je suis en train de voir pour quoi il ne veut pas ?

Merci beaucoup

Re,

C'est quoi le message d'erreur ?

Damien

Re,

Je l'ai mis en pièce jointe,

il traite 235 lignes puis pour le 236 il fait l 'objet puis pour la date j'ai ce message à l'ecran.

Merci

ttt

Je viens de comprendre quelque chose, des que dans le traitement on arrive à des mails qui sont envoyé de Microsoft Exchange ce message d’erreur apparait, par exemple la ligne 236 correspondait à un accusé de non réception, j’ai supprimé ce mail puis relancé la macro, cette fois ci elle s’est arrêté à la ligne 1258 qui correspond aussi à un mail de Microsoft Exchange concernant une remise différée.

Si je supprime ce mail aussi la macro va aller plus loin jusqu’au mail suivant concernant des Remises.

CDT,

Re,

Bizarre,

Et si tu essayes avec CreationTime au lieu de ReceivedTime tu as la même erreur ?

Par contre je ne sais pas si cela correspond a la même date.....

Sinon je ne vois pas très bien pourquoi cela plante : l'objet n'a pas la propriété... Mais cela reste quand même un mail...

Je ne comprend pas...Si qqun a une explication ?

Damien

Rechercher des sujets similaires à "recuperation mails"