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

Macros et VBA Excel Discussion :

Lecture de fichier .msg sauvegardés sur un disque dur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut Lecture de fichier .msg sauvegardés sur un disque dur
    Bonjour à tous,

    J'ai mis au point une appli à partir d'excel qui récupère tous les messages arrivant dans la boîte de réception d'une messagerie Outlook 2003 et les sauvegarde sur un serveur au format ".msg".

    Jusque là tout va bien.

    Dans un deuxième temps, des collaborateurs par le biais de Userform peuvent accéder à la liste de ces messages et les consulters. Mon problème arrive à ce moment là.

    Je gère l'ouverture des messages par une simple instruction ThisWorkbook.FollowHyperlink strChemin ou strChemin qui gère tout à fait bien l'ouverture. Mais ensuite, je veux pouvoir ajouter dans l'objet du mail ainsi ouvert une référence interne pour pouvoir identifier la demande tout au long des échanges mails.

    Et là, je cale lamentablement. Dans le code suivant, alors qu'Outlook est bien ouvert, que le message est bien ouvert, il ne trouve rien dans ActiveInspector et plante sur myolApp.ActiveInspector.CurrentItem.Subject
    .
    Le pire, c'est que lorsque je vais en débugage et que je poursuis l'exécution en pas à pas à partir de l'instruction qui plante, là ça se met à fonctionner, il récupère l'objet du message et y ajoute la référence ad hoc. Je n'y comprends plus rien !!!

    J'ai longuement cherché mais comme je ne maîtrise pas vraiment les objets Outlook, j'aurais besoin d'une aide précieuse et rapide sur ce sujet.

    D'avance merci à tous ceux qui pourront me donner un coup de main
    Schub78


    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
    Private Sub lstPJ_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       Dim strChemin As String
       Dim oMessage As MailItem
       Dim myolApp As Outlook.Application
       Dim myInspectors As Outlook.Inspectors
       Dim NS As Object, Dossier As Object
       Dim Test, iCount As Integer
     
       Application.ScreenUpdating = True
     
       If lstPJ.ListIndex > -1 Then
          strChemin = ThisWorkbook.Path & "\Mails\" & lstPJ.List(lstPJ.ListIndex, 3)
          ThisWorkbook.FollowHyperlink strChemin
     
          Set myolApp = New Outlook.Application
          strSujet = myolApp.ActiveInspector.CurrentItem.Subject
     
          If txtTicket.Value <> "" Then
     
     
             intPosDeb = InStr(1, strSujet, "<RT", 0)
             If intPosDeb = 0 Then
                myolApp.ActiveInspector.CurrentItem.Subject = strSujet & " - <RT" & txtTicket.Value & ">"
                'oMessage.SaveAs strChemin, OlSaveAsType.olMSG
                'oMessage.Save
             End If
          End If
       End If
       lstPJ.ListIndex = -1
     
    End Sub

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Tu as essayé le forum Outlook?

    Ceci dit une remarque quand même.
    Je gère l'ouverture des messages par une simple instruction ThisWorkbook.FollowHyperlink strChemin ou strChemin qui gère tout à fait bien l'ouverture
    Si cette ouverture se fait dans Outlook, pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myolApp = New Outlook.Application
    Si Outlook est déjà ouvert, j'aurais plutôt pensé à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myolApp = GetOject(, "Outlook.Application")
    Par ailleurs, si le code fonctionne en pas à pas, c'est peut-être qu'il manque un quelque part, après l'ouverture du message?

    Cordialement,

    PGZ

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut
    Merci beaucoup de ce retour rapide.

    Il faudrait effectivement mieux un GetObject. Je pensais qu'il fallait utiliser une instance outlook pour pouvoir ensuite manipuler le fichier msg ouvert précédemment et le récupérer via l'ActiveInspector, mais ce n'est pas forcément la bonne méthode.

    Par ailleurs, pouvez-vous préciser ce que vous entendez par l'usage d'un DoEvents car je n'utilise effectivement pas cette instruction.

    Encore merci.
    Schub

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir,

    Le DoEvents interrompt temporairement l'exécution du code en attendant que le système d'exploitation (multitâches) traite ce qu'il a en cours.

    Dans ton cas, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.FollowHyperlink strChemin
    DoEvents
     
    Set myolApp = GetObject(,"Outlook.Application")
    En espérant que cela t'aide,

    PGZ

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut
    Pour information j'ai essayé avec DoEvents en le plaçant à différents endroits mais ça ne donne rien.

Discussions similaires

  1. Lecture / écriture d'objets sur le disque dur ?
    Par miria.vhg dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/02/2007, 15h21
  2. Problème de déplacement de fichier sur le Disque Dur
    Par DeFCrew dans le forum Sécurité
    Réponses: 8
    Dernier message: 11/09/2006, 11h44
  3. Condition sur existence de fichier sur le disque dur
    Par manshoon dans le forum Langage
    Réponses: 3
    Dernier message: 10/05/2006, 09h58
  4. Réponses: 3
    Dernier message: 05/12/2005, 14h17
  5. commande pour trouver un fichier sur le disque dur...
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 11/11/2005, 00h10

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