IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Exporter des mail Outlook vers Excel


Sujet :

VBA Outlook

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Points : 34
    Points
    34
    Par défaut Exporter des mail Outlook vers Excel
    Bonjour,

    je suis débutant en VBA et surtout je ne connais quasiment pas l'API Office, j'aurais donc besoin de votre aide. J'aimerais savoir comment je pourrais faire en sorte d'écrire dans un fichier Excel lorsque je double clique sur un mail non lu sur Outlook.
    J'ai réussi la partie où il faut créer le fichier Excel, j'arrive aussi à récupérer les info du mail. Mon problème est le suivant : je ne veux écrire seulement les mails qui n'ont pas été lu. Lorsque j’ai exécuté pas à pas, je me suis rendu compte que la propriété UnRead du mail est toujours fausse car le mail passe automatiquement en "lu", je ne peux donc pas utiliser cette condition pour ne traiter que les mails non lu.

    Connaisez vous une méthode pour palier à ce problème ?

    Merci.

    Voici mon code actuel (je n'ai pas mis les fonctions utilitaires)

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    Public WithEvents m_objMail As Outlook.mailItem
     
    Sub Application_ItemLoad(ByVal Item As Object)
        On Error Resume Next
        Dim strClass As String
        Select Case Item.Class
            Case olMail
                Set m_objMail = Item
        End Select
    End Sub
     
     
    Sub m_objMail_Open(Cancel As Boolean)
        If m_objMail.UnRead Then
                Dim olkMsg As Object, _
                excApp As Object, _
                excWkb As Object, _
                excWks As Object, _
                intRow As Integer, _
                intVersion As Integer, _
                strFilename As String, _
                sender As String
     
            strFilename = "C:\Temp\Test.xlsx"
     
            If strFilename <> "" Then
                intVersion = GetOutlookVersion()
                Set excApp = CreateObject("Excel.Application")
                If FileExists(strFilename) Then
                    Set excWkb = excApp.Workbooks.Open(strFilename)
                    Set excWks = excWkb.ActiveSheet
                Else
                    excApp.SheetsInNewWorkbook = 1
                    Set excWkb = excApp.Workbooks.Add
                    excWkb.SaveAs (strFilename)
                    MsgBox ("Le fichier a été créé sur " + strFilename)
                    excWkb.WorkSheets(1).Name = "Mail"
     
                    Set excWks = excWkb.ActiveSheet
     
                    With excWks
                        .Cells(1, 1) = "Expéditeur"
                        .Cells(1, 2) = "Objet"
                        .Cells(1, 3) = "Date de récéption"
                        .Cells(1, 4) = "Date d'ouverture"
                    End With
                End If
     
                excWks.Rows(2).Insert
                sender = GetSMTPAddress(m_objMail, intVersion)
                excWks.Cells(2, 1) = sender
                excWks.Cells(2, 2) = m_objMail.Subject
                excWks.Cells(2, 3) = m_objMail.ReceivedTime
                excWks.Cells(2, 4) = Date + Time
     
                excWkb.Close (True)
            End If
            Set excWks = Nothing
            Set excWkb = Nothing
            excApp.Quit
            Set excApp = Nothing
     
            MsgBox ("Le mail de " + sender + " a été exporté avec succès")
        End If
    End Sub

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 29
    Points : 34
    Points
    34
    Par défaut
    Je crois que j'ai trouvé une solution.

    J'ai ajouté une variable globale que je met à jours dans l’événement Read() :

    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
     
    Public WithEvents m_objMail As Outlook.mailItem
    Dim m_unread As Boolean
     
    Sub Application_ItemLoad(ByVal Item As Object)
        On Error Resume Next
        Dim strClass As String
        Select Case Item.Class
            Case olMail
            Set m_objMail = Item
        End Select
    End Sub
     
    Sub m_objMail_Read()
        m_unread = m_objMail.UnRead
    End Sub
     
     
    Sub m_objMail_Open(Cancel As Boolean)
        If m_unread Then
    ...

  3. #3
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Bonjour,
    Tu peux utiliser l'événement qui se déclenche à chaque RECEPTION DE MAIL(Application_NewMailEx),
    où alors vérifier dans ton fichier excel si l'ID du mail est présent(EntryID).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Extraire des mails Outlook vers Excel
    Par secu_res_123 dans le forum VBA Outlook
    Réponses: 10
    Dernier message: 10/09/2015, 12h16
  2. [OL-2007] Extract des RV Outlook vers Excel
    Par legone dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 10/07/2009, 06h58
  3. Exporter des données OUTLOOK vers EXCEL
    Par devdev dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 04/03/2009, 15h35
  4. Export des données MsAccess vers Excel
    Par vautour29 dans le forum Access
    Réponses: 3
    Dernier message: 26/01/2007, 20h14
  5. exporter des données access vers excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 8
    Dernier message: 20/06/2006, 23h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo