Extraire les informations d'un mail de type rendez-vous

Bonjour à tous

J'arrive à me débrouiller en VBA Excel mais là je bloque.

Je dois réaliser un suivi des invitations dans Outlook et j'essaye désespérément de récupérer les mails que me renvois les participants.

Le problème, c’est que j’arrive à récupérer les données tels que le sujet, le destinataire … lorsque c’est un mail normal mais dès que je tombe sur un mail de type invitation j’ai un blocage.

Je souhaiterais faire un test sur ma boite mail et lorsque c’est un mail de type invitation que l’on m’a renvoyé c’est-à–dire une acceptation ou un refus, je voudrais pouvoir récupérer les données suivantes :
- Expéditeur (.SenderEmailAdress)
- Le type de mail (class)
- L’emplacement
- La date de début et de fin du rendez-vous
- Le texte (body)
- Le status (accepté, refus, provisoire)

Bonjour Samvba,

En P.J. une proposition contenant le code suivant :

Private Sub scanReception()
    Dim oSheet As Worksheet
    Dim oMail As Object
    Dim oNS As Outlook.Namespace
    Dim olFolder As Outlook.MAPIFolder
    Dim oUnreadMails As Outlook.Items

    Dim sFilter As String
    Dim lRow As Long
    Dim sSubject As String, sBody As String
    Dim sLocation As String
    Dim lPos1 As Long, lPos2 As Long

    Set oNS = GetNamespace("MAPI")
    Set olFolder = oNS.GetDefaultFolder(olFolderInbox)

    'Filtre sur les mails non lus
    sFilter = "@SQL=" & Chr(34) & "urn:schemas:httpmail:read" & Chr(34) & "=0"
    Set oUnreadMails = olFolder.Items.Restrict(sFilter)

    Set oSheet = ThisWorkbook.Worksheets(1)
    'On recherche la dernière ligne remplie de la feuille
    lRow = oSheet.Cells(oSheet.Rows.Count, 1).End(xlUp).Row

    'On boucle sur tous les mails non lus
    For Each oMail In oUnreadMails
        Select Case oMail.Class
            'On ne sélectionne que les mails des classes "Meeting"
            Case Is = olMeetingResponseNegative, olMeetingResponsePositive, olMeetingResponseTentative
                lRow = lRow + 1
                'On remplace les sauts de lignes dans le corps du mail
                sBody = Replace(Left(oMail.Body, 300), vbCrLf, "|")
                'On récupère l'emplacement dans le corps du mail
                lPos1 = InStr(1, sBody, "?|")
                If lPos1 > 0 Then
                    lPos2 = InStr(lPos1, sBody, "(")
                    sLocation = Mid(sBody, lPos1 + 2, lPos2 - (lPos1 + 2))
                Else
                    sLocation = ""
                End If

                'On remplit les colonnes de la nouvelle ligne
                oSheet.Range("A" & CStr(lRow)).Value = oMail.GetInspector.CurrentItem.ReplyRecipients.Item(1).Name 'Expéditeur
                oSheet.Range("B" & CStr(lRow)).Value = oMail.Class
                oSheet.Range("C" & CStr(lRow)).Value = oMail.ReminderTime 'Date de début
                oSheet.Range("D" & CStr(lRow)).Value = sLocation
                oSheet.Range("E" & CStr(lRow)).Value = sBody
                'On indique le statut
                Select Case oMail.Class
                    Case Is = olMeetingResponseNegative
                        oSheet.Range("F" & CStr(lRow)).Value = "Refus"
                    Case Is = olMeetingResponsePositive
                        oSheet.Range("F" & CStr(lRow)).Value = "Accepté"
                    Case Is = olMeetingResponseTentative
                        oSheet.Range("F" & CStr(lRow)).Value = "Provisoire"
                End Select
                'On indique que le mail est lu
                oMail.UnRead = False

        End Select
    Next

    'On fait le ménage
    Set oMail = Nothing
    Set olFolder = Nothing
    Set oNS = Nothing
    Set oSheet = Nothing
End Sub
Rechercher des sujets similaires à "extraire informations mail type rendez"