travailler sur mail selectionné dans boite de reception

fredl

XLDnaute Impliqué
Bonjour à tous,
est il possible de travailler sur le mail selectionné dans la boite de reception, mais sans activer la reference microsoft outlook XX library?
Utiliser la librairie me pose problème car cette macro est utilisée par plusieurs PC avec des versions d'office diférentes, et elle bugue lorqu'elle ne trouve pas la version paramétrée de la librairie ...

Ci dessous la routine que j'utilise, qui marche, et qui fonctionne obligatoirement avec la librairie...

Ou peut etre connaissez vous une astuce pour adapter le fichier à son ouverture à la bonne version de la librairie?

//////////////////////////////////////////////////////////////
Dim Exp As Explorer
Dim curFold As Outlook.Folder
set curFold.Name = "nouveaux arrivants"
Dim myInbox As Outlook.MAPIFolder
Dim Ns As Outlook.Namespace
'Définition objet
Set Exp = ActiveExplorer
Set sel = Exp.Selection
Set Ns = olApp.GetNamespace("MAPI")

'recup info "boite de reception"
Set myInbox = Ns.GetDefaultFolder(olFolderInbox)

'Boucle de récupération de l'objet des messages sélectionnés
For Each Itm In sel

' Itm.Move curFold 'ici par exemple deplacement de ce mail dans le repertoire curFold
GoTo 1000
Next Itm
' Nettoyage des objets
1000 Set Itm = Nothing
Set sel = Nothing
Set Exp = Nothing
//////////////////////////////////////////////////////////////

merci d'avance pour votre aide!

Cordialement

Frédéric
 

Staple1600

XLDnaute Barbatruc
Re : travailler sur mail selectionné dans boite de reception

Bonjour à tous


A tester (car pas d'Outlook sur ce PC)
C'est la même piste que préconisée par Tentative, à savoir déclarer les variables en Late Binding
Code:
Dim olApp As Object, Ns As Object, myInBox As Object
Dim Exp As Object, sel As Object, Itm
Set olApp = CreateObject("Outlook.application")
Set Ns = olApp.GetNamespace("MAPI")
Set Exp = olApp.ActiveExplorer
Set sel = Exp.Selection
'recup info "boite de reception"
Set myInbox = Ns.GetDefaultFolder(olFolderInbox)
'Boucle de récupération de l'objet des messages sélectionnés
For Each Itm In sel
' Itm.Move curFold 'ici par exemple deplacement de ce mail dans le repertoire curFold
GoTo 1000
Next Itm
' Nettoyage des objets
1000 Set Itm = Nothing
Set sel = Nothing
Set Exp = Nothing
 
Dernière édition:

fredl

XLDnaute Impliqué
Re : travailler sur mail selectionné dans boite de reception

Bonjour STAPLE1600, Tentative,
Désolé pour mon retour tardif suite à votre intervention, j'étais absent...
je viens donc de tester vos propositions et plus particulièrement celle de STAPLE1600 puisque répondant directement à mon besoin :
Super!!! ça marche en déclarant en objet!...
J'aurais cependant une dernière question à vous poser pour une autre procédure qui travaille dans toute la boite de reception :
le code fonctionne sauf sur l'instruction :
"Set myInbox = Ns.GetDefaultFolder(olFolderInbox) "
J'ai testé aussi
"Set myInbox = Ns.GetDefaultFolder(balOutlook)"
l'erreur affichée etant "Argument ou appel de procedure incorrect"
"myInbox" etant sensé etre ma boite de reception.
Une petite idée?
Merci encore pour votre aide précieuse.
Frédéric

Code :
Dim olApp As Object, Ns As Object
Dim Itm
Set olApp = CreateObject("Outlook.application")
Set Ns = olApp.GetNamespace("MAPI")

'recup info "boite de reception"
Set myInbox = Ns.GetDefaultFolder(olFolderInbox)
'Boucle de récupération de l'objet des messages sélectionnés
For Each Itm In myInbox.Items
' Itm.Move curFold 'ici par exemple deplacement de ce mail dans le repertoire curFold

Next Itm
' Nettoyage des objets
Set Itm = Nothing
Set myInbox = Nothing
 
Dernière édition:

fredl

XLDnaute Impliqué
Re : travailler sur mail selectionné dans boite de reception

rebonjour à vous,
et merci à STAPLE 1600 pour son conseil et redirection dans cette discussion.
Apres de nouveaux essais, je vous confirme que dans le code suivant(sans ref outlook activée) :
'////////////////////////////////////////////////////////////////
Sub triMessages_dansBoiteReception()
Dim j As Integer
Set olApp = CreateObject("Outlook.application")
Set olSpace = olApp.GetNamespace("MAPI")
Set olInbox = olSpace.GetDefaultFolder(olFolderInbox)
'boucle sur tous les messages de la boite de réception
For j = olInbox.Items.Count To 1 Step -1
v = olInbox.Items(j).Subject
Next j

'////////////////////////////////////////////////////////////////



une erreur apparait à l'instruction :
"Set olInbox = olSpace.GetDefaultFolder(olFolderInbox)"
(instruction fonctionnelle lorsque la ref "outlook library..." est activée...).

Auriez vous une idée fonctionnelle de remplacement de cette instruction (non fonctionnelle en mode "déclaration d'objet") qui permet de pointer sur la "boite de reception?"

Merci pour votre aide.

Frédéric
 

Staple1600

XLDnaute Barbatruc
Re : travailler sur mail selectionné dans boite de reception

Bonsoir à tous

fredl
Tu n'as pas tout lu attentivement... ;):rolleyes:
Il faut déclarer As Object (si la référence n'est pas cochée)
Il faut déclarer les objets au lieu d'activer les bibliothèques d'objets.
Tentative

A tester (car pas d'Outlook sur ce PC)
C'est la même piste que préconisée par Tentative, à savoir déclarer les variables en Late Binding



Vois avec ce code auquel je te laisse ajouter les déclarations de variables idoines
Code:
Sub LitMessagerie()
Set olApp = CreateObject("Outlook.Application")
Set olns = olApp.GetNamespace("MAPI")
Set olxFolder = olns.GetDefaultFolder(6) ' olns.GetDefaultFolder(olFolderInbox)
Sheets("Litmessagerie").Select
On Error Resume Next
n = 2
For Each i In olxFolder.Items
Cells(n, 1) = i.Subject
Cells(n, 2) = i.SenderName
Cells(n, 3) = i.CreationTime
n = n + 1
Next
End Sub
 
Dernière édition:

fredl

XLDnaute Impliqué
Re : travailler sur mail selectionné dans boite de reception

Bonjour et ...
merciiiiiiiiiiiiiiiiiiiiiiiiiii!....
je remets donc ci dessous le code avec tout ce qui va bien et qui fonctionne!!!!
Trop bien!
Cela m'enlève une sacrée épine du pied.
Merci à tous!
Frédéric

Sub LitMessagerieBoiteDeReception()
Dim olApp As Object, olns As Object, olxFolder As Object
Dim v, w, x As String
Dim i as variant

Set olApp = CreateObject("Outlook.Application")
Set olns = olApp.GetNamespace("MAPI")
Set olxFolder = olns.GetDefaultFolder(6) ' Boite de reception

For Each i In olxFolder.Items
'boucle sur tous les messages de la boite de réception
v = i.Subject
w = i.SenderName
x = i.CreationTime
'n = n + 1
Next
End Sub
 

Discussions similaires

Réponses
6
Affichages
551

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA