OVH Cloud OVH Cloud

Détection Envoi / réception Email

14 réponses
Avatar
Xantia
Bonjour

Je fait communiquer ma base Access avec la messagerie d'Outlook.
J'aimerais en fait "automatiser" mon code pour que dés réception d'un nouvel
Email dans ma boite de réception et/ou dès que j'ai éffectivement envoyé un
E-mail
j'enclenche une action envers ma base Access.

Que est le code VB qui me permet de détecter l'envoie ou la reception de
mes messages ?



merci pour votre aide

@+
Alain

10 réponses

1 2
Avatar
Clive Lumb
Regarder du coté du vba de Outlook.
Les evenements NewMail et ItemSend de l'objet Application devraient faire
ton affaire.

Clive

"Xantia" a écrit dans le message de
news:
Bonjour

Je fait communiquer ma base Access avec la messagerie d'Outlook.
J'aimerais en fait "automatiser" mon code pour que dés réception d'un


nouvel
Email dans ma boite de réception et/ou dès que j'ai éffectivement envoyé


un
E-mail
j'enclenche une action envers ma base Access.

Que est le code VB qui me permet de détecter l'envoie ou la reception de
mes messages ?



merci pour votre aide

@+
Alain




Avatar
Xantia
Bonjour Climb

Merci pour l'info
J'ai commencé à regarder ça mais ça suscite des questions nouvelles

En fait je cherche à copier "automatiquemet" dans une table access les mails
dont l'adresse
d'expediteur (ou de destinataire) existent déja dans une autre de mes table.

est ce que je peux récupérer directement ces infos d'Outlook (un espece de
Me. )

ou bien dois je déclarer des variables comme ci dessous pour acceder à tous
les champs
du mail ?
Dim OL_App As New Outlook.Application
Dim OL_Space As Outlook.NameSpace
Dim OL_Folder As Outlook.MAPIFolder
Dim OL_Folderx As Outlook.MAPIFolde
Set OL_Space = OL_App.GetNamespace("MAPI")
Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
Set OL_Folder = OL_Folderx

dans ce cas comment faire pour adresser uniquement les nouveaux mail (reçu
puis envoyés ?)

merci pour ton aide
@+
Alain



"Clive Lumb" a écrit dans le message
de news:
Regarder du coté du vba de Outlook.
Les evenements NewMail et ItemSend de l'objet Application devraient faire
ton affaire.

Clive

"Xantia" a écrit dans le message


de
news:
> Bonjour
>
> Je fait communiquer ma base Access avec la messagerie d'Outlook.
> J'aimerais en fait "automatiser" mon code pour que dés réception d'un
nouvel
> Email dans ma boite de réception et/ou dès que j'ai éffectivement


envoyé
un
> E-mail
> j'enclenche une action envers ma base Access.
>
> Que est le code VB qui me permet de détecter l'envoie ou la reception


de
> mes messages ?
>
>
>
> merci pour votre aide
>
> @+
> Alain
>
>




Avatar
Clive Lumb
Voici ce que l'on trouve dans l'aide d'Outlook
-----------------------
L'exemple Microsoft Visual Basic pour Applications (VBA) suivant illustre
comment l'événement NewMailEx renvoie l'identificateur d'entrée. Pour
exécuter l'exemple, vous devez exécuter la routine Initialize_Handler. Cet
événement se déclenche lors de la réception d'un ou plusieurs messages dans
la Boîte de réception.


Public WithEvents outApp As Outlook.Application

Sub Intialize_Handler()
Set outApp = Application
End Sub

Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim intInitial As Integer
Dim intFinal As Integer
Dim strEntryId As String
Dim intLength As Integer

intInitial = 1
intLength = Len(EntryIDCollection)
MsgBox "Collection of EntryIds: " & EntryIDCollection
intFinal = InStr(intInitial, EntryIDCollection, ",")
Do While intFinal <> 0
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intFinal -
intInitial))
MsgBox "EntryId: " & strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject
intInitial = intFinal + 1
intFinal = InStr(intInitial, EntryIDCollection, ",")
Loop
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength -
intInitial) + 1)
MsgBox strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject

End Sub
------------------------------------L'exemple Microsoft Visual Basic/Visual
Basic pour Applications (VBA) suivant montre comment annuler l'événement
ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code doit être
placé dans un module de classe et la routine Initialize_handler doit être
appelée avant que la procédure événementielle puisse être appelée par
Microsoft Outlook.

Public WithEvents myOlApp As Outlook.Application

Public Sub Initialize_handler()
Set myOlApp = CreateObject("Outlook.Application")
End Sub

Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "Are you sure you want to send " & Item.Subject & "?"
If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
Cancel = True
End If
End Sub


"Xantia" a écrit dans le message de
news:
Bonjour Climb

Merci pour l'info
J'ai commencé à regarder ça mais ça suscite des questions nouvelles

En fait je cherche à copier "automatiquemet" dans une table access les


mails
dont l'adresse
d'expediteur (ou de destinataire) existent déja dans une autre de mes


table.

est ce que je peux récupérer directement ces infos d'Outlook (un espece de
Me. )

ou bien dois je déclarer des variables comme ci dessous pour acceder à


tous
les champs
du mail ?
Dim OL_App As New Outlook.Application
Dim OL_Space As Outlook.NameSpace
Dim OL_Folder As Outlook.MAPIFolder
Dim OL_Folderx As Outlook.MAPIFolde
Set OL_Space = OL_App.GetNamespace("MAPI")
Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
Set OL_Folder = OL_Folderx

dans ce cas comment faire pour adresser uniquement les nouveaux mail (reçu
puis envoyés ?)

merci pour ton aide
@+
Alain



"Clive Lumb" a écrit dans le


message
de news:
> Regarder du coté du vba de Outlook.
> Les evenements NewMail et ItemSend de l'objet Application devraient


faire
> ton affaire.
>
> Clive
>
> "Xantia" a écrit dans le message
de
> news:
> > Bonjour
> >
> > Je fait communiquer ma base Access avec la messagerie d'Outlook.
> > J'aimerais en fait "automatiser" mon code pour que dés réception d'un
> nouvel
> > Email dans ma boite de réception et/ou dès que j'ai éffectivement
envoyé
> un
> > E-mail
> > j'enclenche une action envers ma base Access.
> >
> > Que est le code VB qui me permet de détecter l'envoie ou la reception
de
> > mes messages ?
> >
> >
> >
> > merci pour votre aide
> >
> > @+
> > Alain
> >
> >
>
>




Avatar
Xantia
Merci Climb
ça m'a l'air génial ce bout de code mais j'ai encore quelques questions ...

1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou lorsque je
reçois un Email)
J'ai cru comprendre qu'Outlook désactivait les macros (donc mon code VB)

Que dois je faire pour que ce code soit "autorisé" et s'exécute ?

2) Merci de me confirmer que mon interprétation est la bonne

J'ai compris que :

outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je dois donc
simplement appeler
dans les evenements NewMail et ItemSend de l'objet Application.
il me suffit de faire donc un Call outApp_NewMailEx.

Puis de faire à l'interieur de chaque subroutine mes opérations de copy vers
ma base Access
en prenant les valeurs dans : mai.Subject
mai.From
mai.To ...

Encore merci pour ton aide précieuse
@+
Alain


"Clive Lumb" a écrit dans le message
de news:
Voici ce que l'on trouve dans l'aide d'Outlook
-----------------------
L'exemple Microsoft Visual Basic pour Applications (VBA) suivant illustre
comment l'événement NewMailEx renvoie l'identificateur d'entrée. Pour
exécuter l'exemple, vous devez exécuter la routine Initialize_Handler. Cet
événement se déclenche lors de la réception d'un ou plusieurs messages


dans
la Boîte de réception.


Public WithEvents outApp As Outlook.Application

Sub Intialize_Handler()
Set outApp = Application
End Sub

Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim intInitial As Integer
Dim intFinal As Integer
Dim strEntryId As String
Dim intLength As Integer

intInitial = 1
intLength = Len(EntryIDCollection)
MsgBox "Collection of EntryIds: " & EntryIDCollection
intFinal = InStr(intInitial, EntryIDCollection, ",")
Do While intFinal <> 0
strEntryId = Strings.Mid(EntryIDCollection, intInitial,


(intFinal -
intInitial))
MsgBox "EntryId: " & strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject
intInitial = intFinal + 1
intFinal = InStr(intInitial, EntryIDCollection, ",")
Loop
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength -
intInitial) + 1)
MsgBox strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject

End Sub
------------------------------------L'exemple Microsoft Visual


Basic/Visual
Basic pour Applications (VBA) suivant montre comment annuler l'événement
ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code doit


être
placé dans un module de classe et la routine Initialize_handler doit être
appelée avant que la procédure événementielle puisse être appelée par
Microsoft Outlook.

Public WithEvents myOlApp As Outlook.Application

Public Sub Initialize_handler()
Set myOlApp = CreateObject("Outlook.Application")
End Sub

Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim prompt As String
prompt = "Are you sure you want to send " & Item.Subject & "?"
If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
Cancel = True
End If
End Sub


"Xantia" a écrit dans le message


de
news:
> Bonjour Climb
>
> Merci pour l'info
> J'ai commencé à regarder ça mais ça suscite des questions nouvelles
>
> En fait je cherche à copier "automatiquemet" dans une table access les
mails
> dont l'adresse
> d'expediteur (ou de destinataire) existent déja dans une autre de mes
table.
>
> est ce que je peux récupérer directement ces infos d'Outlook (un espece


de
> Me. )
>
> ou bien dois je déclarer des variables comme ci dessous pour acceder à
tous
> les champs
> du mail ?
> Dim OL_App As New Outlook.Application
> Dim OL_Space As Outlook.NameSpace
> Dim OL_Folder As Outlook.MAPIFolder
> Dim OL_Folderx As Outlook.MAPIFolde
> Set OL_Space = OL_App.GetNamespace("MAPI")
> Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> Set OL_Folder = OL_Folderx
>
> dans ce cas comment faire pour adresser uniquement les nouveaux mail


(reçu
> puis envoyés ?)
>
> merci pour ton aide
> @+
> Alain
>
>
>
> "Clive Lumb" a écrit dans le
message
> de news:
> > Regarder du coté du vba de Outlook.
> > Les evenements NewMail et ItemSend de l'objet Application devraient
faire
> > ton affaire.
> >
> > Clive
> >
> > "Xantia" a écrit dans le


message
> de
> > news:
> > > Bonjour
> > >
> > > Je fait communiquer ma base Access avec la messagerie d'Outlook.
> > > J'aimerais en fait "automatiser" mon code pour que dés réception


d'un
> > nouvel
> > > Email dans ma boite de réception et/ou dès que j'ai éffectivement
> envoyé
> > un
> > > E-mail
> > > j'enclenche une action envers ma base Access.
> > >
> > > Que est le code VB qui me permet de détecter l'envoie ou la


reception
> de
> > > mes messages ?
> > >
> > >
> > >
> > > merci pour votre aide
> > >
> > > @+
> > > Alain
> > >
> > >
> >
> >
>
>




Avatar
Clive Lumb
Xantia,

Oui tu as très bien compris, par contre l'exemple que je t'ai donné est fait
pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple de le
faire. Si tu comptes le faire tourner que sur ton poste il n'y a rien à
faire au niveau de la sécurité macro. Si c'est à distribuer sur plusieurs je
crois qu'il faut le "signer".
Pour les opérations Access - dans un appli semblable j'ai créé un ActiveX
avec VB6 que j'ai déclaré comme référence dans Outlook.



"Xantia" a écrit dans le message de
news:
Merci Climb
ça m'a l'air génial ce bout de code mais j'ai encore quelques questions


...

1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou lorsque je
reçois un Email)
J'ai cru comprendre qu'Outlook désactivait les macros (donc mon code VB)

Que dois je faire pour que ce code soit "autorisé" et s'exécute ?

2) Merci de me confirmer que mon interprétation est la bonne

J'ai compris que :

outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je dois donc
simplement appeler
dans les evenements NewMail et ItemSend de l'objet Application.
il me suffit de faire donc un Call outApp_NewMailEx.

Puis de faire à l'interieur de chaque subroutine mes opérations de copy


vers
ma base Access
en prenant les valeurs dans : mai.Subject
mai.From
mai.To ...

Encore merci pour ton aide précieuse
@+
Alain


"Clive Lumb" a écrit dans le


message
de news:
> Voici ce que l'on trouve dans l'aide d'Outlook
> -----------------------
> L'exemple Microsoft Visual Basic pour Applications (VBA) suivant


illustre
> comment l'événement NewMailEx renvoie l'identificateur d'entrée. Pour
> exécuter l'exemple, vous devez exécuter la routine Initialize_Handler.


Cet
> événement se déclenche lors de la réception d'un ou plusieurs messages
dans
> la Boîte de réception.
>
>
> Public WithEvents outApp As Outlook.Application
>
> Sub Intialize_Handler()
> Set outApp = Application
> End Sub
>
> Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
> Dim mai As Object
> Dim intInitial As Integer
> Dim intFinal As Integer
> Dim strEntryId As String
> Dim intLength As Integer
>
> intInitial = 1
> intLength = Len(EntryIDCollection)
> MsgBox "Collection of EntryIds: " & EntryIDCollection
> intFinal = InStr(intInitial, EntryIDCollection, ",")
> Do While intFinal <> 0
> strEntryId = Strings.Mid(EntryIDCollection, intInitial,
(intFinal -
> intInitial))
> MsgBox "EntryId: " & strEntryId
> Set mai = Application.Session.GetItemFromID(strEntryId)
> MsgBox mai.Subject
> intInitial = intFinal + 1
> intFinal = InStr(intInitial, EntryIDCollection, ",")
> Loop
> strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength -
> intInitial) + 1)
> MsgBox strEntryId
> Set mai = Application.Session.GetItemFromID(strEntryId)
> MsgBox mai.Subject
>
> End Sub
> ------------------------------------L'exemple Microsoft Visual
Basic/Visual
> Basic pour Applications (VBA) suivant montre comment annuler l'événement
> ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code doit
être
> placé dans un module de classe et la routine Initialize_handler doit


être
> appelée avant que la procédure événementielle puisse être appelée par
> Microsoft Outlook.
>
> Public WithEvents myOlApp As Outlook.Application
>
> Public Sub Initialize_handler()
> Set myOlApp = CreateObject("Outlook.Application")
> End Sub
>
> Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
> Dim prompt As String
> prompt = "Are you sure you want to send " & Item.Subject & "?"
> If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> Cancel = True
> End If
> End Sub
>
>
> "Xantia" a écrit dans le message
de
> news:
> > Bonjour Climb
> >
> > Merci pour l'info
> > J'ai commencé à regarder ça mais ça suscite des questions nouvelles
> >
> > En fait je cherche à copier "automatiquemet" dans une table access les
> mails
> > dont l'adresse
> > d'expediteur (ou de destinataire) existent déja dans une autre de mes
> table.
> >
> > est ce que je peux récupérer directement ces infos d'Outlook (un


espece
de
> > Me. )
> >
> > ou bien dois je déclarer des variables comme ci dessous pour acceder à
> tous
> > les champs
> > du mail ?
> > Dim OL_App As New Outlook.Application
> > Dim OL_Space As Outlook.NameSpace
> > Dim OL_Folder As Outlook.MAPIFolder
> > Dim OL_Folderx As Outlook.MAPIFolde
> > Set OL_Space = OL_App.GetNamespace("MAPI")
> > Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> > Set OL_Folder = OL_Folderx
> >
> > dans ce cas comment faire pour adresser uniquement les nouveaux mail
(reçu
> > puis envoyés ?)
> >
> > merci pour ton aide
> > @+
> > Alain
> >
> >
> >
> > "Clive Lumb" a écrit dans le
> message
> > de news:
> > > Regarder du coté du vba de Outlook.
> > > Les evenements NewMail et ItemSend de l'objet Application devraient
> faire
> > > ton affaire.
> > >
> > > Clive
> > >
> > > "Xantia" a écrit dans le
message
> > de
> > > news:
> > > > Bonjour
> > > >
> > > > Je fait communiquer ma base Access avec la messagerie d'Outlook.
> > > > J'aimerais en fait "automatiser" mon code pour que dés réception
d'un
> > > nouvel
> > > > Email dans ma boite de réception et/ou dès que j'ai éffectivement
> > envoyé
> > > un
> > > > E-mail
> > > > j'enclenche une action envers ma base Access.
> > > >
> > > > Que est le code VB qui me permet de détecter l'envoie ou la
reception
> > de
> > > > mes messages ?
> > > >
> > > >
> > > >
> > > > merci pour votre aide
> > > >
> > > > @+
> > > > Alain
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Xantia
Bonjour Clive

Je ne suis pas encore arrivé à faire tourner ton code
lorsque je fait le : Call outApp_NewMailEx
quel est le paramettre à mettre passer entre parenthèsese Call
outApp_NewMailEx ( ????)

merci encore
@+
Alain

"Clive Lumb" a écrit dans le message
de news:
Xantia,

Oui tu as très bien compris, par contre l'exemple que je t'ai donné est


fait
pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple de le
faire. Si tu comptes le faire tourner que sur ton poste il n'y a rien à
faire au niveau de la sécurité macro. Si c'est à distribuer sur plusieurs


je
crois qu'il faut le "signer".
Pour les opérations Access - dans un appli semblable j'ai créé un ActiveX
avec VB6 que j'ai déclaré comme référence dans Outlook.



"Xantia" a écrit dans le message


de
news:
> Merci Climb
> ça m'a l'air génial ce bout de code mais j'ai encore quelques questions
...
>
> 1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou lorsque je
> reçois un Email)
> J'ai cru comprendre qu'Outlook désactivait les macros (donc mon code VB)
>
> Que dois je faire pour que ce code soit "autorisé" et s'exécute ?
>
> 2) Merci de me confirmer que mon interprétation est la bonne
>
> J'ai compris que :
>
> outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je dois


donc
> simplement appeler
> dans les evenements NewMail et ItemSend de l'objet Application.
> il me suffit de faire donc un Call outApp_NewMailEx.
>
> Puis de faire à l'interieur de chaque subroutine mes opérations de copy
vers
> ma base Access
> en prenant les valeurs dans : mai.Subject
> mai.From
> mai.To ...
>
> Encore merci pour ton aide précieuse
> @+
> Alain
>
>
> "Clive Lumb" a écrit dans le
message
> de news:
> > Voici ce que l'on trouve dans l'aide d'Outlook
> > -----------------------
> > L'exemple Microsoft Visual Basic pour Applications (VBA) suivant
illustre
> > comment l'événement NewMailEx renvoie l'identificateur d'entrée. Pour
> > exécuter l'exemple, vous devez exécuter la routine Initialize_Handler.
Cet
> > événement se déclenche lors de la réception d'un ou plusieurs messages
> dans
> > la Boîte de réception.
> >
> >
> > Public WithEvents outApp As Outlook.Application
> >
> > Sub Intialize_Handler()
> > Set outApp = Application
> > End Sub
> >
> > Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
> > Dim mai As Object
> > Dim intInitial As Integer
> > Dim intFinal As Integer
> > Dim strEntryId As String
> > Dim intLength As Integer
> >
> > intInitial = 1
> > intLength = Len(EntryIDCollection)
> > MsgBox "Collection of EntryIds: " & EntryIDCollection
> > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > Do While intFinal <> 0
> > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> (intFinal -
> > intInitial))
> > MsgBox "EntryId: " & strEntryId
> > Set mai = Application.Session.GetItemFromID(strEntryId)
> > MsgBox mai.Subject
> > intInitial = intFinal + 1
> > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > Loop
> > strEntryId = Strings.Mid(EntryIDCollection, intInitial,


(intLength -
> > intInitial) + 1)
> > MsgBox strEntryId
> > Set mai = Application.Session.GetItemFromID(strEntryId)
> > MsgBox mai.Subject
> >
> > End Sub
> > ------------------------------------L'exemple Microsoft Visual
> Basic/Visual
> > Basic pour Applications (VBA) suivant montre comment annuler


l'événement
> > ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code


doit
> être
> > placé dans un module de classe et la routine Initialize_handler doit
être
> > appelée avant que la procédure événementielle puisse être appelée par
> > Microsoft Outlook.
> >
> > Public WithEvents myOlApp As Outlook.Application
> >
> > Public Sub Initialize_handler()
> > Set myOlApp = CreateObject("Outlook.Application")
> > End Sub
> >
> > Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
> > Dim prompt As String
> > prompt = "Are you sure you want to send " & Item.Subject & "?"
> > If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> > Cancel = True
> > End If
> > End Sub
> >
> >
> > "Xantia" a écrit dans le


message
> de
> > news:
> > > Bonjour Climb
> > >
> > > Merci pour l'info
> > > J'ai commencé à regarder ça mais ça suscite des questions nouvelles
> > >
> > > En fait je cherche à copier "automatiquemet" dans une table access


les
> > mails
> > > dont l'adresse
> > > d'expediteur (ou de destinataire) existent déja dans une autre de


mes
> > table.
> > >
> > > est ce que je peux récupérer directement ces infos d'Outlook (un
espece
> de
> > > Me. )
> > >
> > > ou bien dois je déclarer des variables comme ci dessous pour acceder


à
> > tous
> > > les champs
> > > du mail ?
> > > Dim OL_App As New Outlook.Application
> > > Dim OL_Space As Outlook.NameSpace
> > > Dim OL_Folder As Outlook.MAPIFolder
> > > Dim OL_Folderx As Outlook.MAPIFolde
> > > Set OL_Space = OL_App.GetNamespace("MAPI")
> > > Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> > > Set OL_Folder = OL_Folderx
> > >
> > > dans ce cas comment faire pour adresser uniquement les nouveaux mail
> (reçu
> > > puis envoyés ?)
> > >
> > > merci pour ton aide
> > > @+
> > > Alain
> > >
> > >
> > >
> > > "Clive Lumb" a écrit dans le
> > message
> > > de news:
> > > > Regarder du coté du vba de Outlook.
> > > > Les evenements NewMail et ItemSend de l'objet Application


devraient
> > faire
> > > > ton affaire.
> > > >
> > > > Clive
> > > >
> > > > "Xantia" a écrit dans le
> message
> > > de
> > > > news:
> > > > > Bonjour
> > > > >
> > > > > Je fait communiquer ma base Access avec la messagerie d'Outlook.
> > > > > J'aimerais en fait "automatiser" mon code pour que dés réception
> d'un
> > > > nouvel
> > > > > Email dans ma boite de réception et/ou dès que j'ai


éffectivement
> > > envoyé
> > > > un
> > > > > E-mail
> > > > > j'enclenche une action envers ma base Access.
> > > > >
> > > > > Que est le code VB qui me permet de détecter l'envoie ou la
> reception
> > > de
> > > > > mes messages ?
> > > > >
> > > > >
> > > > >
> > > > > merci pour votre aide
> > > > >
> > > > > @+
> > > > > Alain
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Clive Lumb
Alain,
NewMailEx est un évenement de l'objet Ou_App, donc on ne l'appele pas...
Si tu regardes dans la liste déroulant des objets en haut de la fenetre de
code tu devrais trouver Out_App, ensuite
dans les procédure tu trouveras NewMailEx
Mettre "msgbox "Vous avez recu un mail" dans cette procédure pour voir si
cela marche


"Xantia" a écrit dans le message de
news:%
Bonjour Clive

Je ne suis pas encore arrivé à faire tourner ton code
lorsque je fait le : Call outApp_NewMailEx
quel est le paramettre à mettre passer entre parenthèsese Call
outApp_NewMailEx ( ????)

merci encore
@+
Alain

"Clive Lumb" a écrit dans le


message
de news:
> Xantia,
>
> Oui tu as très bien compris, par contre l'exemple que je t'ai donné est
fait
> pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple de le
> faire. Si tu comptes le faire tourner que sur ton poste il n'y a rien à
> faire au niveau de la sécurité macro. Si c'est à distribuer sur


plusieurs
je
> crois qu'il faut le "signer".
> Pour les opérations Access - dans un appli semblable j'ai créé un


ActiveX
> avec VB6 que j'ai déclaré comme référence dans Outlook.
>
>
>
> "Xantia" a écrit dans le message
de
> news:
> > Merci Climb
> > ça m'a l'air génial ce bout de code mais j'ai encore quelques


questions
> ...
> >
> > 1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou lorsque


je
> > reçois un Email)
> > J'ai cru comprendre qu'Outlook désactivait les macros (donc mon code


VB)
> >
> > Que dois je faire pour que ce code soit "autorisé" et s'exécute ?
> >
> > 2) Merci de me confirmer que mon interprétation est la bonne
> >
> > J'ai compris que :
> >
> > outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je dois
donc
> > simplement appeler
> > dans les evenements NewMail et ItemSend de l'objet Application.
> > il me suffit de faire donc un Call outApp_NewMailEx.
> >
> > Puis de faire à l'interieur de chaque subroutine mes opérations de


copy
> vers
> > ma base Access
> > en prenant les valeurs dans : mai.Subject
> > mai.From
> > mai.To ...
> >
> > Encore merci pour ton aide précieuse
> > @+
> > Alain
> >
> >
> > "Clive Lumb" a écrit dans le
> message
> > de news:
> > > Voici ce que l'on trouve dans l'aide d'Outlook
> > > -----------------------
> > > L'exemple Microsoft Visual Basic pour Applications (VBA) suivant
> illustre
> > > comment l'événement NewMailEx renvoie l'identificateur d'entrée.


Pour
> > > exécuter l'exemple, vous devez exécuter la routine


Initialize_Handler.
> Cet
> > > événement se déclenche lors de la réception d'un ou plusieurs


messages
> > dans
> > > la Boîte de réception.
> > >
> > >
> > > Public WithEvents outApp As Outlook.Application
> > >
> > > Sub Intialize_Handler()
> > > Set outApp = Application
> > > End Sub
> > >
> > > Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
> > > Dim mai As Object
> > > Dim intInitial As Integer
> > > Dim intFinal As Integer
> > > Dim strEntryId As String
> > > Dim intLength As Integer
> > >
> > > intInitial = 1
> > > intLength = Len(EntryIDCollection)
> > > MsgBox "Collection of EntryIds: " & EntryIDCollection
> > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > Do While intFinal <> 0
> > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> > (intFinal -
> > > intInitial))
> > > MsgBox "EntryId: " & strEntryId
> > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > MsgBox mai.Subject
> > > intInitial = intFinal + 1
> > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > Loop
> > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
(intLength -
> > > intInitial) + 1)
> > > MsgBox strEntryId
> > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > MsgBox mai.Subject
> > >
> > > End Sub
> > > ------------------------------------L'exemple Microsoft Visual
> > Basic/Visual
> > > Basic pour Applications (VBA) suivant montre comment annuler
l'événement
> > > ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code
doit
> > être
> > > placé dans un module de classe et la routine Initialize_handler doit
> être
> > > appelée avant que la procédure événementielle puisse être appelée


par
> > > Microsoft Outlook.
> > >
> > > Public WithEvents myOlApp As Outlook.Application
> > >
> > > Public Sub Initialize_handler()
> > > Set myOlApp = CreateObject("Outlook.Application")
> > > End Sub
> > >
> > > Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As


Boolean)
> > > Dim prompt As String
> > > prompt = "Are you sure you want to send " & Item.Subject & "?"
> > > If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> > > Cancel = True
> > > End If
> > > End Sub
> > >
> > >
> > > "Xantia" a écrit dans le
message
> > de
> > > news:
> > > > Bonjour Climb
> > > >
> > > > Merci pour l'info
> > > > J'ai commencé à regarder ça mais ça suscite des questions


nouvelles
> > > >
> > > > En fait je cherche à copier "automatiquemet" dans une table access
les
> > > mails
> > > > dont l'adresse
> > > > d'expediteur (ou de destinataire) existent déja dans une autre de
mes
> > > table.
> > > >
> > > > est ce que je peux récupérer directement ces infos d'Outlook (un
> espece
> > de
> > > > Me. )
> > > >
> > > > ou bien dois je déclarer des variables comme ci dessous pour


acceder
à
> > > tous
> > > > les champs
> > > > du mail ?
> > > > Dim OL_App As New Outlook.Application
> > > > Dim OL_Space As Outlook.NameSpace
> > > > Dim OL_Folder As Outlook.MAPIFolder
> > > > Dim OL_Folderx As Outlook.MAPIFolde
> > > > Set OL_Space = OL_App.GetNamespace("MAPI")
> > > > Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> > > > Set OL_Folder = OL_Folderx
> > > >
> > > > dans ce cas comment faire pour adresser uniquement les nouveaux


mail
> > (reçu
> > > > puis envoyés ?)
> > > >
> > > > merci pour ton aide
> > > > @+
> > > > Alain
> > > >
> > > >
> > > >
> > > > "Clive Lumb" a écrit dans


le
> > > message
> > > > de news:
> > > > > Regarder du coté du vba de Outlook.
> > > > > Les evenements NewMail et ItemSend de l'objet Application
devraient
> > > faire
> > > > > ton affaire.
> > > > >
> > > > > Clive
> > > > >
> > > > > "Xantia" a écrit dans le
> > message
> > > > de
> > > > > news:
> > > > > > Bonjour
> > > > > >
> > > > > > Je fait communiquer ma base Access avec la messagerie


d'Outlook.
> > > > > > J'aimerais en fait "automatiser" mon code pour que dés


réception
> > d'un
> > > > > nouvel
> > > > > > Email dans ma boite de réception et/ou dès que j'ai
éffectivement
> > > > envoyé
> > > > > un
> > > > > > E-mail
> > > > > > j'enclenche une action envers ma base Access.
> > > > > >
> > > > > > Que est le code VB qui me permet de détecter l'envoie ou la
> > reception
> > > > de
> > > > > > mes messages ?
> > > > > >
> > > > > >
> > > > > >
> > > > > > merci pour votre aide
> > > > > >
> > > > > > @+
> > > > > > Alain
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Xantia
Bonsoir Clive

Bon je vais etre franc .. j'y arrive pas avec ton code
si tu arrives à le faire marcher j'aimerai bien avoir le
mode d'emploi ...

@+

Alain

"Clive Lumb" a écrit dans le message de
news:e$1M%
Alain,
NewMailEx est un évenement de l'objet Ou_App, donc on ne l'appele pas...
Si tu regardes dans la liste déroulant des objets en haut de la fenetre de
code tu devrais trouver Out_App, ensuite
dans les procédure tu trouveras NewMailEx
Mettre "msgbox "Vous avez recu un mail" dans cette procédure pour voir si
cela marche


"Xantia" a écrit dans le message


de
news:%
> Bonjour Clive
>
> Je ne suis pas encore arrivé à faire tourner ton code
> lorsque je fait le : Call outApp_NewMailEx
> quel est le paramettre à mettre passer entre parenthèsese Call
> outApp_NewMailEx ( ????)
>
> merci encore
> @+
> Alain
>
> "Clive Lumb" a écrit dans le
message
> de news:
> > Xantia,
> >
> > Oui tu as très bien compris, par contre l'exemple que je t'ai donné


est
> fait
> > pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple de


le
> > faire. Si tu comptes le faire tourner que sur ton poste il n'y a rien


à
> > faire au niveau de la sécurité macro. Si c'est à distribuer sur
plusieurs
> je
> > crois qu'il faut le "signer".
> > Pour les opérations Access - dans un appli semblable j'ai créé un
ActiveX
> > avec VB6 que j'ai déclaré comme référence dans Outlook.
> >
> >
> >
> > "Xantia" a écrit dans le


message
> de
> > news:
> > > Merci Climb
> > > ça m'a l'air génial ce bout de code mais j'ai encore quelques
questions
> > ...
> > >
> > > 1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou


lorsque
je
> > > reçois un Email)
> > > J'ai cru comprendre qu'Outlook désactivait les macros (donc mon code
VB)
> > >
> > > Que dois je faire pour que ce code soit "autorisé" et s'exécute ?
> > >
> > > 2) Merci de me confirmer que mon interprétation est la bonne
> > >
> > > J'ai compris que :
> > >
> > > outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je dois
> donc
> > > simplement appeler
> > > dans les evenements NewMail et ItemSend de l'objet Application.
> > > il me suffit de faire donc un Call outApp_NewMailEx.
> > >
> > > Puis de faire à l'interieur de chaque subroutine mes opérations de
copy
> > vers
> > > ma base Access
> > > en prenant les valeurs dans : mai.Subject
> > > mai.From
> > > mai.To ...
> > >
> > > Encore merci pour ton aide précieuse
> > > @+
> > > Alain
> > >
> > >
> > > "Clive Lumb" a écrit dans le
> > message
> > > de news:
> > > > Voici ce que l'on trouve dans l'aide d'Outlook
> > > > -----------------------
> > > > L'exemple Microsoft Visual Basic pour Applications (VBA) suivant
> > illustre
> > > > comment l'événement NewMailEx renvoie l'identificateur d'entrée.
Pour
> > > > exécuter l'exemple, vous devez exécuter la routine
Initialize_Handler.
> > Cet
> > > > événement se déclenche lors de la réception d'un ou plusieurs
messages
> > > dans
> > > > la Boîte de réception.
> > > >
> > > >
> > > > Public WithEvents outApp As Outlook.Application
> > > >
> > > > Sub Intialize_Handler()
> > > > Set outApp = Application
> > > > End Sub
> > > >
> > > > Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
> > > > Dim mai As Object
> > > > Dim intInitial As Integer
> > > > Dim intFinal As Integer
> > > > Dim strEntryId As String
> > > > Dim intLength As Integer
> > > >
> > > > intInitial = 1
> > > > intLength = Len(EntryIDCollection)
> > > > MsgBox "Collection of EntryIds: " & EntryIDCollection
> > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > Do While intFinal <> 0
> > > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> > > (intFinal -
> > > > intInitial))
> > > > MsgBox "EntryId: " & strEntryId
> > > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > > MsgBox mai.Subject
> > > > intInitial = intFinal + 1
> > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > Loop
> > > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> (intLength -
> > > > intInitial) + 1)
> > > > MsgBox strEntryId
> > > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > > MsgBox mai.Subject
> > > >
> > > > End Sub
> > > > ------------------------------------L'exemple Microsoft Visual
> > > Basic/Visual
> > > > Basic pour Applications (VBA) suivant montre comment annuler
> l'événement
> > > > ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de code
> doit
> > > être
> > > > placé dans un module de classe et la routine Initialize_handler


doit
> > être
> > > > appelée avant que la procédure événementielle puisse être appelée
par
> > > > Microsoft Outlook.
> > > >
> > > > Public WithEvents myOlApp As Outlook.Application
> > > >
> > > > Public Sub Initialize_handler()
> > > > Set myOlApp = CreateObject("Outlook.Application")
> > > > End Sub
> > > >
> > > > Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As
Boolean)
> > > > Dim prompt As String
> > > > prompt = "Are you sure you want to send " & Item.Subject & "?"
> > > > If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> > > > Cancel = True
> > > > End If
> > > > End Sub
> > > >
> > > >
> > > > "Xantia" a écrit dans le
> message
> > > de
> > > > news:
> > > > > Bonjour Climb
> > > > >
> > > > > Merci pour l'info
> > > > > J'ai commencé à regarder ça mais ça suscite des questions
nouvelles
> > > > >
> > > > > En fait je cherche à copier "automatiquemet" dans une table


access
> les
> > > > mails
> > > > > dont l'adresse
> > > > > d'expediteur (ou de destinataire) existent déja dans une autre


de
> mes
> > > > table.
> > > > >
> > > > > est ce que je peux récupérer directement ces infos d'Outlook (un
> > espece
> > > de
> > > > > Me. )
> > > > >
> > > > > ou bien dois je déclarer des variables comme ci dessous pour
acceder
> à
> > > > tous
> > > > > les champs
> > > > > du mail ?
> > > > > Dim OL_App As New Outlook.Application
> > > > > Dim OL_Space As Outlook.NameSpace
> > > > > Dim OL_Folder As Outlook.MAPIFolder
> > > > > Dim OL_Folderx As Outlook.MAPIFolde
> > > > > Set OL_Space = OL_App.GetNamespace("MAPI")
> > > > > Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> > > > > Set OL_Folder = OL_Folderx
> > > > >
> > > > > dans ce cas comment faire pour adresser uniquement les nouveaux
mail
> > > (reçu
> > > > > puis envoyés ?)
> > > > >
> > > > > merci pour ton aide
> > > > > @+
> > > > > Alain
> > > > >
> > > > >
> > > > >
> > > > > "Clive Lumb" a écrit


dans
le
> > > > message
> > > > > de news:
> > > > > > Regarder du coté du vba de Outlook.
> > > > > > Les evenements NewMail et ItemSend de l'objet Application
> devraient
> > > > faire
> > > > > > ton affaire.
> > > > > >
> > > > > > Clive
> > > > > >
> > > > > > "Xantia" a écrit dans


le
> > > message
> > > > > de
> > > > > > news:
> > > > > > > Bonjour
> > > > > > >
> > > > > > > Je fait communiquer ma base Access avec la messagerie
d'Outlook.
> > > > > > > J'aimerais en fait "automatiser" mon code pour que dés
réception
> > > d'un
> > > > > > nouvel
> > > > > > > Email dans ma boite de réception et/ou dès que j'ai
> éffectivement
> > > > > envoyé
> > > > > > un
> > > > > > > E-mail
> > > > > > > j'enclenche une action envers ma base Access.
> > > > > > >
> > > > > > > Que est le code VB qui me permet de détecter l'envoie ou la
> > > reception
> > > > > de
> > > > > > > mes messages ?
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > merci pour votre aide
> > > > > > >
> > > > > > > @+
> > > > > > > Alain
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Clive Lumb
Alain,

Voici le code testé.

NOTE: pour accéder à la liste des destinataires, expéditeurs etc si > Outlook2000 SP3, alors on va vous démander permission.

Pour voir toutes les propriétés des messages, utiliser l'explorateur
d'objets de VB (F2) et choisir la bibliothèque Outlook, puis regarder la
classe "MailItem".

Bon courage
Clive

********************
'Créer un nouveau projet VB6
'Ajouter une référence à "Microsoft Outlook nn Object Library" au projet
'Créer un form avec 3 boutons de commande Command1, Command2 et Command3
'Coller ce code dans le form
'Lancer, appuyer sur le bouton "Surveillance", lancer Outlook et attendre de
récevoir
'un mail ou essayer d'en envoyer

Public WithEvents outApp As Outlook.Application

Sub Intialize_Handler()
Set outApp = Application
End Sub

Private Sub Command2_Click()
'Arrête la surveillance Outlook
Set out_app = Nothing
Me.Command1.Enabled = True
Me.Command2.Enabled = False
End Sub

Private Sub Command3_Click()
'Arrête la surveillance Outlook et ferme le programme
Set out_app = Nothing
Unload Me
End Sub

Private Sub Form_Load()
With Me
.Width = 2500
.Height = 1500
.Command2.Enabled = False
.Command1.Caption = "Surveillance"
.Command2.Caption = "Pas de surveillance"
.Command3.Caption = "Fermer"
.Command1.Height = 350
.Command2.Height = 350
.Command3.Height = 350
.Command1.Top = 0
.Command2.Top = .Command1.Top + .Command1.Height * 1.1
.Command3.Top = .Command2.Top + .Command2.Height * 1.1
.Command1.Left = 0
.Command2.Left = 0
.Command3.Left = 0
.Command1.Width = 1800
.Command2.Width = 1800
.Command3.Width = 1800
End With
End Sub

Private Sub outApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim Dest As String
Dest = Item.To
Dest = "Vous envoyez un message à " & Dest
MsgBox Dest
End Sub

Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim intInitial As Integer
Dim intFinal As Integer
Dim strEntryId As String
Dim intLength As Integer

intInitial = 1
intLength = Len(EntryIDCollection)
MsgBox "Collection of EntryIds: " & EntryIDCollection
intFinal = InStr(intInitial, EntryIDCollection, ",")
Do While intFinal <> 0
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intFinal -
intInitial))
DoEvents
MsgBox "EntryId: " & strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject
intInitial = intFinal + 1
intFinal = InStr(intInitial, EntryIDCollection, ",")
Loop
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength -
intInitial) + 1)
DoEvents
MsgBox strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject

End Sub

Private Sub Command1_Click()
'Démarre la surveillance Outlook
Call Intialize_Handler
Me.Command1.Enabled = False
Me.Command2.Enabled = True
End Sub

********************

"Xantia" a écrit dans le message de
news:%23d1erH%
Bonsoir Clive

Bon je vais etre franc .. j'y arrive pas avec ton code
si tu arrives à le faire marcher j'aimerai bien avoir le
mode d'emploi ...

@+

Alain

"Clive Lumb" a écrit dans le message de
news:e$1M%
> Alain,
> NewMailEx est un évenement de l'objet Ou_App, donc on ne l'appele pas...
> Si tu regardes dans la liste déroulant des objets en haut de la fenetre


de
> code tu devrais trouver Out_App, ensuite
> dans les procédure tu trouveras NewMailEx
> Mettre "msgbox "Vous avez recu un mail" dans cette procédure pour voir


si
> cela marche
>
>
> "Xantia" a écrit dans le message
de
> news:%
> > Bonjour Clive
> >
> > Je ne suis pas encore arrivé à faire tourner ton code
> > lorsque je fait le : Call outApp_NewMailEx
> > quel est le paramettre à mettre passer entre parenthèsese Call
> > outApp_NewMailEx ( ????)
> >
> > merci encore
> > @+
> > Alain
> >
> > "Clive Lumb" a écrit dans le
> message
> > de news:
> > > Xantia,
> > >
> > > Oui tu as très bien compris, par contre l'exemple que je t'ai donné
est
> > fait
> > > pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple


de
le
> > > faire. Si tu comptes le faire tourner que sur ton poste il n'y a


rien
à
> > > faire au niveau de la sécurité macro. Si c'est à distribuer sur
> plusieurs
> > je
> > > crois qu'il faut le "signer".
> > > Pour les opérations Access - dans un appli semblable j'ai créé un
> ActiveX
> > > avec VB6 que j'ai déclaré comme référence dans Outlook.
> > >
> > >
> > >
> > > "Xantia" a écrit dans le
message
> > de
> > > news:
> > > > Merci Climb
> > > > ça m'a l'air génial ce bout de code mais j'ai encore quelques
> questions
> > > ...
> > > >
> > > > 1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou
lorsque
> je
> > > > reçois un Email)
> > > > J'ai cru comprendre qu'Outlook désactivait les macros (donc mon


code
> VB)
> > > >
> > > > Que dois je faire pour que ce code soit "autorisé" et s'exécute ?
> > > >
> > > > 2) Merci de me confirmer que mon interprétation est la bonne
> > > >
> > > > J'ai compris que :
> > > >
> > > > outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je


dois
> > donc
> > > > simplement appeler
> > > > dans les evenements NewMail et ItemSend de l'objet Application.
> > > > il me suffit de faire donc un Call outApp_NewMailEx.
> > > >
> > > > Puis de faire à l'interieur de chaque subroutine mes opérations de
> copy
> > > vers
> > > > ma base Access
> > > > en prenant les valeurs dans : mai.Subject
> > > > mai.From
> > > > mai.To ...
> > > >
> > > > Encore merci pour ton aide précieuse
> > > > @+
> > > > Alain
> > > >
> > > >
> > > > "Clive Lumb" a écrit dans


le
> > > message
> > > > de news:
> > > > > Voici ce que l'on trouve dans l'aide d'Outlook
> > > > > -----------------------
> > > > > L'exemple Microsoft Visual Basic pour Applications (VBA) suivant
> > > illustre
> > > > > comment l'événement NewMailEx renvoie l'identificateur d'entrée.
> Pour
> > > > > exécuter l'exemple, vous devez exécuter la routine
> Initialize_Handler.
> > > Cet
> > > > > événement se déclenche lors de la réception d'un ou plusieurs
> messages
> > > > dans
> > > > > la Boîte de réception.
> > > > >
> > > > >
> > > > > Public WithEvents outApp As Outlook.Application
> > > > >
> > > > > Sub Intialize_Handler()
> > > > > Set outApp = Application
> > > > > End Sub
> > > > >
> > > > > Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
> > > > > Dim mai As Object
> > > > > Dim intInitial As Integer
> > > > > Dim intFinal As Integer
> > > > > Dim strEntryId As String
> > > > > Dim intLength As Integer
> > > > >
> > > > > intInitial = 1
> > > > > intLength = Len(EntryIDCollection)
> > > > > MsgBox "Collection of EntryIds: " & EntryIDCollection
> > > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > > Do While intFinal <> 0
> > > > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> > > > (intFinal -
> > > > > intInitial))
> > > > > MsgBox "EntryId: " & strEntryId
> > > > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > > > MsgBox mai.Subject
> > > > > intInitial = intFinal + 1
> > > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > > Loop
> > > > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> > (intLength -
> > > > > intInitial) + 1)
> > > > > MsgBox strEntryId
> > > > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > > > MsgBox mai.Subject
> > > > >
> > > > > End Sub
> > > > > ------------------------------------L'exemple Microsoft Visual
> > > > Basic/Visual
> > > > > Basic pour Applications (VBA) suivant montre comment annuler
> > l'événement
> > > > > ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de


code
> > doit
> > > > être
> > > > > placé dans un module de classe et la routine Initialize_handler
doit
> > > être
> > > > > appelée avant que la procédure événementielle puisse être


appelée
> par
> > > > > Microsoft Outlook.
> > > > >
> > > > > Public WithEvents myOlApp As Outlook.Application
> > > > >
> > > > > Public Sub Initialize_handler()
> > > > > Set myOlApp = CreateObject("Outlook.Application")
> > > > > End Sub
> > > > >
> > > > > Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As
> Boolean)
> > > > > Dim prompt As String
> > > > > prompt = "Are you sure you want to send " & Item.Subject & "?"
> > > > > If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> > > > > Cancel = True
> > > > > End If
> > > > > End Sub
> > > > >
> > > > >
> > > > > "Xantia" a écrit dans le
> > message
> > > > de
> > > > > news:
> > > > > > Bonjour Climb
> > > > > >
> > > > > > Merci pour l'info
> > > > > > J'ai commencé à regarder ça mais ça suscite des questions
> nouvelles
> > > > > >
> > > > > > En fait je cherche à copier "automatiquemet" dans une table
access
> > les
> > > > > mails
> > > > > > dont l'adresse
> > > > > > d'expediteur (ou de destinataire) existent déja dans une autre
de
> > mes
> > > > > table.
> > > > > >
> > > > > > est ce que je peux récupérer directement ces infos d'Outlook


(un
> > > espece
> > > > de
> > > > > > Me. )
> > > > > >
> > > > > > ou bien dois je déclarer des variables comme ci dessous pour
> acceder
> > à
> > > > > tous
> > > > > > les champs
> > > > > > du mail ?
> > > > > > Dim OL_App As New Outlook.Application
> > > > > > Dim OL_Space As Outlook.NameSpace
> > > > > > Dim OL_Folder As Outlook.MAPIFolder
> > > > > > Dim OL_Folderx As Outlook.MAPIFolde
> > > > > > Set OL_Space = OL_App.GetNamespace("MAPI")
> > > > > > Set OL_Folderx = OL_Space.GetDefaultFolder(olFolderInbox)
> > > > > > Set OL_Folder = OL_Folderx
> > > > > >
> > > > > > dans ce cas comment faire pour adresser uniquement les


nouveaux
> mail
> > > > (reçu
> > > > > > puis envoyés ?)
> > > > > >
> > > > > > merci pour ton aide
> > > > > > @+
> > > > > > Alain
> > > > > >
> > > > > >
> > > > > >
> > > > > > "Clive Lumb" a écrit
dans
> le
> > > > > message
> > > > > > de news:
> > > > > > > Regarder du coté du vba de Outlook.
> > > > > > > Les evenements NewMail et ItemSend de l'objet Application
> > devraient
> > > > > faire
> > > > > > > ton affaire.
> > > > > > >
> > > > > > > Clive
> > > > > > >
> > > > > > > "Xantia" a écrit


dans
le
> > > > message
> > > > > > de
> > > > > > > news:
> > > > > > > > Bonjour
> > > > > > > >
> > > > > > > > Je fait communiquer ma base Access avec la messagerie
> d'Outlook.
> > > > > > > > J'aimerais en fait "automatiser" mon code pour que dés
> réception
> > > > d'un
> > > > > > > nouvel
> > > > > > > > Email dans ma boite de réception et/ou dès que j'ai
> > éffectivement
> > > > > > envoyé
> > > > > > > un
> > > > > > > > E-mail
> > > > > > > > j'enclenche une action envers ma base Access.
> > > > > > > >
> > > > > > > > Que est le code VB qui me permet de détecter l'envoie ou


la
> > > > reception
> > > > > > de
> > > > > > > > mes messages ?
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > merci pour votre aide
> > > > > > > >
> > > > > > > > @+
> > > > > > > > Alain
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Avatar
Xantia
Bonjour Clive

Désolé de te répondre si tard mais je suis un peu débordé ces jours ci.

Tout d'abord merci pour ton aide et ta patience.

En fait je n'ai pas su créer de nouveau projet VB6 (je developpe en VB sous
access et Outlook,
et j'ai uniquement une version Office 2000 Pro) => je sais pas comment
créer un nouveau projet, peut etre
je pense que je dois avoir besoin d'une version développer d'Office ?

Si je crée un formulaire dans mon projet Outlook(vbaProject.OTM, le pb
c'est que lorsque
j'execute mon formulaire, ce dernier garde le focus et je ne peux plus
accéder à la fenetre
Outllook pour envoyer / recevoir mes messages.

Bref j'ai tout de même repris ton code a savoir : la déclaration et les 3
sub routines:

Public WithEvents outApp As Outlook.Application
Sub Intialize_Handler()
Private Sub outApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)

(J'ai copié tout ça dans CetteSessionOutlook)

Lorsque j'envoie un message ça marche , je passe par la Private Sub
outApp_ItemSend
par contre lorsque je reçoie un message rien ne se passe !!!

ps (j'ai bien coché la référence "Microsoft Outlook 9.0 Object Library")

@+
Alain



"Clive Lumb" a écrit dans le message
de news:%23ALVcYE%
Alain,

Voici le code testé.

NOTE: pour accéder à la liste des destinataires, expéditeurs etc si > > Outlook2000 SP3, alors on va vous démander permission.

Pour voir toutes les propriétés des messages, utiliser l'explorateur
d'objets de VB (F2) et choisir la bibliothèque Outlook, puis regarder la
classe "MailItem".

Bon courage
Clive

********************
'Créer un nouveau projet VB6
'Ajouter une référence à "Microsoft Outlook nn Object Library" au projet
'Créer un form avec 3 boutons de commande Command1, Command2 et Command3
'Coller ce code dans le form
'Lancer, appuyer sur le bouton "Surveillance", lancer Outlook et attendre


de
récevoir
'un mail ou essayer d'en envoyer

Public WithEvents outApp As Outlook.Application

Sub Intialize_Handler()
Set outApp = Application
End Sub

Private Sub Command2_Click()
'Arrête la surveillance Outlook
Set out_app = Nothing
Me.Command1.Enabled = True
Me.Command2.Enabled = False
End Sub

Private Sub Command3_Click()
'Arrête la surveillance Outlook et ferme le programme
Set out_app = Nothing
Unload Me
End Sub

Private Sub Form_Load()
With Me
.Width = 2500
.Height = 1500
.Command2.Enabled = False
.Command1.Caption = "Surveillance"
.Command2.Caption = "Pas de surveillance"
.Command3.Caption = "Fermer"
.Command1.Height = 350
.Command2.Height = 350
.Command3.Height = 350
.Command1.Top = 0
.Command2.Top = .Command1.Top + .Command1.Height * 1.1
.Command3.Top = .Command2.Top + .Command2.Height * 1.1
.Command1.Left = 0
.Command2.Left = 0
.Command3.Left = 0
.Command1.Width = 1800
.Command2.Width = 1800
.Command3.Width = 1800
End With
End Sub

Private Sub outApp_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim Dest As String
Dest = Item.To
Dest = "Vous envoyez un message à " & Dest
MsgBox Dest
End Sub

Private Sub outApp_NewMailEx(ByVal EntryIDCollection As String)
Dim mai As Object
Dim intInitial As Integer
Dim intFinal As Integer
Dim strEntryId As String
Dim intLength As Integer

intInitial = 1
intLength = Len(EntryIDCollection)
MsgBox "Collection of EntryIds: " & EntryIDCollection
intFinal = InStr(intInitial, EntryIDCollection, ",")
Do While intFinal <> 0
strEntryId = Strings.Mid(EntryIDCollection, intInitial,


(intFinal -
intInitial))
DoEvents
MsgBox "EntryId: " & strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject
intInitial = intFinal + 1
intFinal = InStr(intInitial, EntryIDCollection, ",")
Loop
strEntryId = Strings.Mid(EntryIDCollection, intInitial, (intLength -
intInitial) + 1)
DoEvents
MsgBox strEntryId
Set mai = Application.Session.GetItemFromID(strEntryId)
MsgBox mai.Subject

End Sub

Private Sub Command1_Click()
'Démarre la surveillance Outlook
Call Intialize_Handler
Me.Command1.Enabled = False
Me.Command2.Enabled = True
End Sub

********************

"Xantia" a écrit dans le message


de
news:%23d1erH%
> Bonsoir Clive
>
> Bon je vais etre franc .. j'y arrive pas avec ton code
> si tu arrives à le faire marcher j'aimerai bien avoir le
> mode d'emploi ...
>
> @+
>
> Alain
>
> "Clive Lumb" a écrit dans le message de
> news:e$1M%
> > Alain,
> > NewMailEx est un évenement de l'objet Ou_App, donc on ne l'appele


pas...
> > Si tu regardes dans la liste déroulant des objets en haut de la


fenetre
de
> > code tu devrais trouver Out_App, ensuite
> > dans les procédure tu trouveras NewMailEx
> > Mettre "msgbox "Vous avez recu un mail" dans cette procédure pour voir
si
> > cela marche
> >
> >
> > "Xantia" a écrit dans le


message
> de
> > news:%
> > > Bonjour Clive
> > >
> > > Je ne suis pas encore arrivé à faire tourner ton code
> > > lorsque je fait le : Call outApp_NewMailEx
> > > quel est le paramettre à mettre passer entre parenthèsese Call
> > > outApp_NewMailEx ( ????)
> > >
> > > merci encore
> > > @+
> > > Alain
> > >
> > > "Clive Lumb" a écrit dans le
> > message
> > > de news:
> > > > Xantia,
> > > >
> > > > Oui tu as très bien compris, par contre l'exemple que je t'ai


donné
> est
> > > fait
> > > > pour tourner sous VBA dans Outlook. C'est l'endroit le plus simple
de
> le
> > > > faire. Si tu comptes le faire tourner que sur ton poste il n'y a
rien
> à
> > > > faire au niveau de la sécurité macro. Si c'est à distribuer sur
> > plusieurs
> > > je
> > > > crois qu'il faut le "signer".
> > > > Pour les opérations Access - dans un appli semblable j'ai créé un
> > ActiveX
> > > > avec VB6 que j'ai déclaré comme référence dans Outlook.
> > > >
> > > >
> > > >
> > > > "Xantia" a écrit dans le
> message
> > > de
> > > > news:
> > > > > Merci Climb
> > > > > ça m'a l'air génial ce bout de code mais j'ai encore quelques
> > questions
> > > > ...
> > > > >
> > > > > 1) Tout d'abord je n'arrive pas à l'exectuer (manuellement ou
> lorsque
> > je
> > > > > reçois un Email)
> > > > > J'ai cru comprendre qu'Outlook désactivait les macros (donc mon
code
> > VB)
> > > > >
> > > > > Que dois je faire pour que ce code soit "autorisé" et s'exécute


?
> > > > >
> > > > > 2) Merci de me confirmer que mon interprétation est la bonne
> > > > >
> > > > > J'ai compris que :
> > > > >
> > > > > outApp_NewMailEx et myOlApp_ItemSend sont 2 sub routines que je
dois
> > > donc
> > > > > simplement appeler
> > > > > dans les evenements NewMail et ItemSend de l'objet


Application.
> > > > > il me suffit de faire donc un Call outApp_NewMailEx.
> > > > >
> > > > > Puis de faire à l'interieur de chaque subroutine mes opérations


de
> > copy
> > > > vers
> > > > > ma base Access
> > > > > en prenant les valeurs dans : mai.Subject
> > > > > mai.From
> > > > > mai.To ...
> > > > >
> > > > > Encore merci pour ton aide précieuse
> > > > > @+
> > > > > Alain
> > > > >
> > > > >
> > > > > "Clive Lumb" a écrit


dans
le
> > > > message
> > > > > de news:
> > > > > > Voici ce que l'on trouve dans l'aide d'Outlook
> > > > > > -----------------------
> > > > > > L'exemple Microsoft Visual Basic pour Applications (VBA)


suivant
> > > > illustre
> > > > > > comment l'événement NewMailEx renvoie l'identificateur


d'entrée.
> > Pour
> > > > > > exécuter l'exemple, vous devez exécuter la routine
> > Initialize_Handler.
> > > > Cet
> > > > > > événement se déclenche lors de la réception d'un ou plusieurs
> > messages
> > > > > dans
> > > > > > la Boîte de réception.
> > > > > >
> > > > > >
> > > > > > Public WithEvents outApp As Outlook.Application
> > > > > >
> > > > > > Sub Intialize_Handler()
> > > > > > Set outApp = Application
> > > > > > End Sub
> > > > > >
> > > > > > Private Sub outApp_NewMailEx(ByVal EntryIDCollection As


String)
> > > > > > Dim mai As Object
> > > > > > Dim intInitial As Integer
> > > > > > Dim intFinal As Integer
> > > > > > Dim strEntryId As String
> > > > > > Dim intLength As Integer
> > > > > >
> > > > > > intInitial = 1
> > > > > > intLength = Len(EntryIDCollection)
> > > > > > MsgBox "Collection of EntryIds: " & EntryIDCollection
> > > > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > > > Do While intFinal <> 0
> > > > > > strEntryId = Strings.Mid(EntryIDCollection,


intInitial,
> > > > > (intFinal -
> > > > > > intInitial))
> > > > > > MsgBox "EntryId: " & strEntryId
> > > > > > Set mai Application.Session.GetItemFromID(strEntryId)
> > > > > > MsgBox mai.Subject
> > > > > > intInitial = intFinal + 1
> > > > > > intFinal = InStr(intInitial, EntryIDCollection, ",")
> > > > > > Loop
> > > > > > strEntryId = Strings.Mid(EntryIDCollection, intInitial,
> > > (intLength -
> > > > > > intInitial) + 1)
> > > > > > MsgBox strEntryId
> > > > > > Set mai = Application.Session.GetItemFromID(strEntryId)
> > > > > > MsgBox mai.Subject
> > > > > >
> > > > > > End Sub
> > > > > > ------------------------------------L'exemple Microsoft Visual
> > > > > Basic/Visual
> > > > > > Basic pour Applications (VBA) suivant montre comment annuler
> > > l'événement
> > > > > > ItemSend en réponse à l'entrée de l'utilisateur. L'exemple de
code
> > > doit
> > > > > être
> > > > > > placé dans un module de classe et la routine


Initialize_handler
> doit
> > > > être
> > > > > > appelée avant que la procédure événementielle puisse être
appelée
> > par
> > > > > > Microsoft Outlook.
> > > > > >
> > > > > > Public WithEvents myOlApp As Outlook.Application
> > > > > >
> > > > > > Public Sub Initialize_handler()
> > > > > > Set myOlApp = CreateObject("Outlook.Application")
> > > > > > End Sub
> > > > > >
> > > > > > Private Sub myOlApp_ItemSend(ByVal Item As Object, Cancel As
> > Boolean)
> > > > > > Dim prompt As String
> > > > > > prompt = "Are you sure you want to send " & Item.Subject & "?"
> > > > > > If MsgBox(prompt, vbYesNo + vbQuestion, "Sample") = vbNo Then
> > > > > > Cancel = True
> > > > > > End If
> > > > > > End Sub
> > > > > >
> > > > > >
> > > > > > "Xantia" a écrit dans


le
> > > message
> > > > > de
> > > > > > news:
> > > > > > > Bonjour Climb
> > > > > > >
> > > > > > > Merci pour l'info
> > > > > > > J'ai commencé à regarder ça mais ça suscite des questions
> > nouvelles
> > > > > > >
> > > > > > > En fait je cherche à copier "automatiquemet" dans une table
> access
> > > les
> > > > > > mails
> > > > > > > dont l'adresse
> > > > > > > d'expediteur (ou de destinataire) existent déja dans une


autre
> de
> > > mes
> > > > > > table.
> > > > > > >
> > > > > > > est ce que je peux récupérer directement ces infos d'Outlook
(un
> > > > espece
> > > > > de
> > > > > > > Me. )
> > > > > > >
> > > > > > > ou bien dois je déclarer des variables comme ci dessous pour
> > acceder
> > > à
> > > > > > tous
> > > > > > > les champs
> > > > > > > du mail ?
> > > > > > > Dim OL_App As New Outlook.Application
> > > > > > > Dim OL_Space As Outlook.NameSpace
> > > > > > > Dim OL_Folder As Outlook.MAPIFolder
> > > > > > > Dim OL_Folderx As Outlook.MAPIFolde
> > > > > > > Set OL_Space = OL_App.GetNamespace("MAPI")
> > > > > > > Set OL_Folderx OL_Space.GetDefaultFolder(olFolderInbox)
> > > > > > > Set OL_Folder = OL_Folderx
> > > > > > >
> > > > > > > dans ce cas comment faire pour adresser uniquement les
nouveaux
> > mail
> > > > > (reçu
> > > > > > > puis envoyés ?)
> > > > > > >
> > > > > > > merci pour ton aide
> > > > > > > @+
> > > > > > > Alain
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > "Clive Lumb" a écrit
> dans
> > le
> > > > > > message
> > > > > > > de news:
> > > > > > > > Regarder du coté du vba de Outlook.
> > > > > > > > Les evenements NewMail et ItemSend de l'objet Application
> > > devraient
> > > > > > faire
> > > > > > > > ton affaire.
> > > > > > > >
> > > > > > > > Clive
> > > > > > > >
> > > > > > > > "Xantia" a écrit
dans
> le
> > > > > message
> > > > > > > de
> > > > > > > > news:
> > > > > > > > > Bonjour
> > > > > > > > >
> > > > > > > > > Je fait communiquer ma base Access avec la messagerie
> > d'Outlook.
> > > > > > > > > J'aimerais en fait "automatiser" mon code pour que dés
> > réception
> > > > > d'un
> > > > > > > > nouvel
> > > > > > > > > Email dans ma boite de réception et/ou dès que j'ai
> > > éffectivement
> > > > > > > envoyé
> > > > > > > > un
> > > > > > > > > E-mail
> > > > > > > > > j'enclenche une action envers ma base Access.
> > > > > > > > >
> > > > > > > > > Que est le code VB qui me permet de détecter l'envoie


ou
la
> > > > > reception
> > > > > > > de
> > > > > > > > > mes messages ?
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > merci pour votre aide
> > > > > > > > >
> > > > > > > > > @+
> > > > > > > > > Alain
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




1 2