Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2008, 12h00   #1
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Par défaut Utilisation d'une pièce jointe

Bonjour.

Je devrais peut-être poster dans la section VBA Excel, vous me direz...
Je cherche à effectuer la suite d'actions suivantes :
  1. Parcours des boites de messagerie,
  2. Repérage des mails avec un Sujet donné (le Sujet est formatté, pas de souci),
  3. Affichage de ces messages dans une interface,
  4. Sélection d'un seul message,
  5. Ouverture de la PJ (.xls) et exploitation du contenu

J'arrive à m'en sortir jusqu'à l'Affichage des messages dans un champ d'une interface (appelé "ListeMails.ZL_Reception"). Lorsque le bon mail est sélectionné, j'arrive à afficher son Sujet dans l'interface, mais pas sa propriété ReceivedTime. Et ma gestion d'erreurs ne marche jamais...

Voici le code en question. La procédure "Verif_Outlook" est une fonction extérieure éprouvée, qui marche sans soucis.
Code :
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
Sub Affiche_BAL()
 
Dim Ootlook As New Outlook.application
Dim Espace As Outlook.Namespace
Dim Dossier As Outlook.MAPIFolder
Dim Ss_dossier As Outlook.MAPIFolder
Dim Drapeau As Boolean, chaine As String, a As Integer
Dim chaine2 As String
Dim monmail As Object
 
On Error GoTo Erreurs
 
Drapeau = Verif_Outlook
If Drapeau = True Then
        ListeMails.ZL_Reception = Null
    Unload ListeMails
    Exit Sub
End If
 
Set Ootlook = CreateObject("Outlook.Application")
Set Espace = Ootlook.GetNamespace("MAPI")
'On vide la liste
Do While ListeMails.ZL_Reception.ListCount > 0
    ListeMails.ZL_Reception.RemoveItem 0
Loop
 
'On va chercher les messages dans la boite de réception concernée et on met les titres dans la zone de liste
For Each Dossier In Espace.Folders
 
    If InStr(1, Dossier.Name, LCase("service monservice")) > 0 Then
        Nom_dossier = Dossier.Name
        Set Dossier = Espace.Folders(Nom_dossier)
        Set Ss_dossier = Dossier.Folders("Boîte de réception")
        Exit For
    End If
 
Next Dossier
 
For a = 1 To Ss_dossier.Items.Count
    If Ss_dossier.Items(a).Subject Like "Compte rendu quotidien" Then
        Set monmail = Ss_dossier.Items(a)
        ListeMails.ZL_Reception.AddItem monmail.Subject & ", datant du : " & monmail.ReceivedTime
    End If
Next a
 
ListeMails.Show
 
Exit Sub
 
Erreurs:    If Err.Number = 438 Then
                Resume Next
                Else
                MsgBox Err.Description, vbCritical, "Erreur N° " & Err.Number
            End If
 
End Sub
Alors, docteur(s) ??
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 14h36   #2
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Eh bien vous souffrez d'un problème de conversion de date !!!

est ce mieux ainsi :
Code :
1
2
 
", datant du : " & Left(CStr(monmail.ReceivedTime), 10)
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 15h25   #3
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Bonne idée, mais malheureusement le problème persiste.

En fait je crains que l'erreur ne soit plus profonde : en effet, malgré mes tests et l'activation de la référence Outlook11, seul la propriété Subject du mail est lisible, les autres propriétés que j'ai testé me générant sans cesse le même message "Erreur d'exécution '-2147221233 (80040010f)' La méthode 'ReceivedTime' de l'objet 'MailItem' a échoué "

Je crois que j'ai mal compris la hiérarchie des objets Outlook, et que mes objets sont mal déclarés...
Il doit y avoir une confusion entre les FolderItems et les MailItems, mais je ne sais vraiment pas comment la résoudre.

Ah, si seulement y'avait un enregistrement de macros dans Outlook...
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 15h34   #4
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Et en mettant
Code :
msgbox Left(CStr(monmail.ReceivedTime), 10)
juste après le
Citation:
set monmail
? ca donne quoi ?

dans quel type de composant affiches tu la liste ?
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 15h41   #5
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
je me retrouve bien avecd les même message d'erreur qu'au dessous, ce qui - a priori - confirme mes soupçons quant à une mauvaise interprétation des objets Outlook que j'utilise...

Quand je vais dans l'aide, et que je regarde Items, j'ai ça :
Code :
Objet contenant des éléments Microsoft Outlook dans un dossier.
Alors que je cherche à manipuler le contenu et non le contenant...

Edit : j'affiche le résultat dans une zone de liste d'une interface incluse dans un fichier Excel.
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 16h00   #6
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Je ne crois pas, sans doute cela vient de ta définition de monmail
Dim monmail As Object
essaye juste avec Dim monmail
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 16h16   #7
Membre à l'essai
 
Inscription : juin 2007
Messages : 50
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 50
Points : 20
Points : 20
Pareil...
Ca commence à faire mal !
ruzakruzak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2008, 16h32   #8
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Nouvelle tentative :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
For a = 1 To Ss_dossier.Items.Count
 
    If Not Ss_dossier.Items(a).Subject Like "Document LL" Then
 
        Set monmail = Ss_dossier.Items(a)
        If (monmail.Class = olMail) Then
            MsgBox monmail.Subject & ", datant du : " & monmail.ReceivedTime
        End If
 
 
    End If
Next a
remplacer le msgbox par ta commande add
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h48.


 
 
 
 
Partenaires

Hébergement Web