olive67
Messages postés4Date d'inscriptionmercredi 1 mars 2006StatutMembreDernière intervention10 avril 2006
-
1 avril 2006 à 23:13
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 2012
-
10 avril 2006 à 12:08
bonsoir,
En VB6, je veux parcourir une boite de reception parmie plusieurs (outllook 2002, xp sp2) et je voudrais que les items soient triés par date.
Pour parcourir la bonne boite je n'ai pas de pb, mais je n'arrive pas à trier en faisant :
myOlFolder.Items.Sort "ReceivedTime", true (myOlFolder est un objet MAPIFolder)
J'ai essayé avec : myOlFolder.Items.Sort "[ReceivedTime]", pareil ca ne marche pas. J'ai essayé avec d'autres propriétés comme Subject, TO, idem...
Comment faire pour trier les items sur la date de réception?
Merci
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 6 avril 2006 à 23:15
Salut oliv,
je sais que ce que je vais te dire après va te paraître bizarre, donc je commence par te dire quelque chose de normal :
En écrivant ce que tu écris, j'observe le même phénomène que toi.
Maintenant le bizarre :
'Rajoutes ces 2 déclarations
Dim miTemp As Outlook.MailItem
Dim misTemp As Outlook.Items
'Modifie le tri qui ne marche pas
Set misTemp = myOlFolder.Items
misTemp.Sort "[ReceivedTime]", True 'je pense, pour avoir aussi essayé les autres tris,
'qu'on ne peut pas trier directement sur le
'le folder, je sais que c'est une référence qu'on
'a mais elle ne le sait peut-être pas :)
'et observes
For Each miTemp In misTemp
Debug.Print miTemp.ReceivedTime & " " & miTemp.Size
Next miTemp
ça ne s'invente pas!
PS : si la réponse te va comme un gant, accepte la réponse, ça plaira à ceux qui cherchent (parce que celle là! vraiment!)
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
olive67
Messages postés4Date d'inscriptionmercredi 1 mars 2006StatutMembreDernière intervention10 avril 20061 4 avril 2006 à 13:57
Bonjour rvblog et merci de m'avoir répondu
Non je n'ai pas d'erreur sur le tri avec myOlFolder.Items.Sort "ReceivedTime", true
J'ai remarqué que les items sont triés mais je n'arrive pas à forcer en ascending ou descending avec le deuxième paramètre du sort. Le plus curieux c'est que d'une BAL à l'autre le sort est soit ascending soit descending.
En attendant pour palier au pb je fais une comparaison de date entre le premier item et le dernier item pour déterminer l'ordre de ma boucle... mais ce n'est pas génial car ca provoque une erreur lorsque le premier item est un accusé de réception (erreur sur la propriété receivedtime)
Pourrais tu m'en dire plus sur le formatage du champ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
rvblog
Messages postés792Date d'inscriptionvendredi 4 mars 2005StatutMembreDernière intervention12 juin 20127 4 avril 2006 à 14:14
Re,
en fait, si tu tries sur des dates, il faut savoir si le Sort trie en fonction du type ou pas.
Que se passe-t-il quand tu tries des numériques (applique-t-il un tri numérique ou chaine de caractères)? s'il applique un tri numérique, il faut t'assurer alors que tes dates sont du bon type (c'est bête, mais je ne sais pas ce qu'il se passe dans le MAPIFolder).
autre point, tu utilises un contrôle spécialisé pour afficher (pour vérifier l'ordre de tri), ou c'est toi qui fait le boulot sur la collection?
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
olive67
Messages postés4Date d'inscriptionmercredi 1 mars 2006StatutMembreDernière intervention10 avril 20061 6 avril 2006 à 11:33
Re,
non c'est moi qui fait le boulot sur la collection. Je fais une fonction de scan d'une BAL.
voici un extrait de la fonction :
Dim myOlNameSpace As outlook.Namespace
Dim myOlFolder As outlook.MAPIFolder
Dim nbmax, nbmin, nbpas, k As Integer
'connexion à outlook
Set myOlNameSpace = myOlApp.GetNamespace("MAPI")
'connexion boite de réception de la BAL
Set myOlFolder = myOlNameSpace.Folders(nomBoite).Folders(nomDossier)
'tri qui ne marche pas
myOlFolder.Items.Sort "ReceivedTime", True
'comparaison des dates pour parcourir les items en descending
If DateValue(myOlFolder.Items.Item(1).ReceivedTime) < DateValue(myOlFolder.Items.Item(myOlFolder.Items.Count).ReceivedTime) Then
nbmin = myOlFolder.Items.Count
nbmax = 1
nbpas = -1
Else
nbmin = 1
nbmax = myOlFolder.Items.Count
nbpas = 1
End If
'boucle de traitement
For k = nbmin To nbmax Step nbpas
'traitement
Next
En fait que j'applique le tri ou pas le résultat est le même, les items sont triés sur la date en ascending ou descending suivant la BAL. J'ai l'impression que le sort du MAPIFolder n'arrive pas à s'appliquer sur VB6. Mais lorsque je mets une proriété qui n'est pas connu de l'objet mailitem, le sort provoque quand meme une erreur.