Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook
Outlook Forum d'entraide sur Microsoft Office 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 11/08/2011, 11h21   #1
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Récupérer le sujet d'un email pour le comparer

Bonjour,

Je suis en train de faire une macro qui devra enregistrer le dernier mail reçu comportant un sujet "Nex Account Request" en .txt dans un fichier sur un réseau et déplacer ce même fichier dans un autre répertoire que celui de réception.

Voici mon code :

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
Sub NewAccountRequest()
 
Dim myOlApp As New Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Dim oMail As MailItem
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = myNamespace.Folders("Dossiers d'archivage").Folders("MAGIC")
Dim strName As String
 
For Each myItem In myInbox.Items
    If oMail.Subject = "New Account Request" Then
        strName = myItem.EntryID
 
        myItem.SaveAs "C:MonRépertoireDestination\MonFichier" & ".txt", olTXT
        myItem.Move myDestFolder
        Set myItem = myItems.GetNext
    End If
Next myItem
End Sub
J'ai un problème avec la ligne suivante :
Code :
If oMail.Subject = "New Account Request" Then
J'obtiens l'erreur suivante :
"Variable objet ou variable de bloc With non définie"

Merci !
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h25   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
comment compte tu exécuter ce code ?

tu peu utiliser l'une des deux méthodes vu ici :

http://www.developpez.net/forums/d11...tomatiquement/
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 11h28   #3
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut code exécuté à réception d'email

Je compte exécuter le code à l'entrée d'un email dans la "Boîte de réception"

Je vais faire un tour sur le lien que tu m'as proposé et je fais un retour ... aprés manger
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h31   #4
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut première remarque

A propos du lien que bbil m'a envoyé, je constate que tu utilises la même syntaxe que j'ai utilisé mais j'obtiens une erreur et pas toi puisque j'utilise Subject
Code :
If oMail.Subject = "New Account Request" Then
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h37   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
oui la syntaxe de ta ligne est bonne le seul problème c'est que ton objet oMail n'est pas défini ..

Dans le premier code
Code :
1
2
3
4
5
6
7
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
 Dim tbItems
 Dim oItem As MailItem
 Dim i As Integer
 tbItems = Split(EntryIDCollection, ",")
 For i = 0 To UBound(tbItems)
   Set oItem = Session.GetItemFromID(tbItems(i))
code événementiel placé dans ThisSession la fonciton NewMailEx, prends comme paramètre une liste d'identifiant séparé par une virgule
et la fonction GetItemFromID permet de récupérer l'Item en fonction de cet ID

et dans le deuxième (appel par règles ) c'est un paramètre de la fonction

Code :
GestionMailsKeybon(Item As Outlook.MailItem)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 11h39   #6
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut chose que je comprends pas

Lorsque j'effectue le pas à pas, quand j'arrive à la ligne :
Code :
For each myItem In myInbox.Items
je mets la souris sur myItem afin de "voir" quel état prends la variable, et je m'appercoit que la variable est le texte "tel" ....
Je pas comprendre pourquoi !
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 11h43   #7
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
oups ... en voyant ton dernier message je m'aperçoit de ton erreur dans ton code un coup tu utilise myITem et plus loin oItem ... il faudrait que tu te mette d'accord sur le nom de la variable ..




Citation:
Envoyé par francky74 Voir le message
...
je mets la souris sur myItem afin de "voir" quel état prends la variable, et je m'appercoit que la variable est le texte "tel" ....
Je pas comprendre pourquoi !
tant que tu as la souris en position clique avec le bouton droit et sélectionne ajouter un espion, ainsi dans la fenêtre espion en plus de la propriété par défaut (ici le sujet) tu pourra voir les autres propriétés de ton objet ..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 14h09   #8
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Pijé


Oui, tu as raison ! Je fait un "For" myItem et après je fait une condition "If" qui n'en dépends pas ... c'est raté d'avance :p
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h15   #9
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Quel mail je pointe ?

Yeap

J'ai changé la variable dans le For (c'est maintenant oMail). Et, comme j'étais tracassifié par ce oMail.Subject qui me donnait un "tel" je me suis intéressé au corps du mail pointé en a
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h20   #10
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Quel mail je pointe ?

Yeap

J'ai changé la variable dans le For (c'est maintenant oMail). Et, comme j'étais tracassifié par ce oMail.Subject qui me donnait un "tel" je me suis intéressé au corps du mail pointé en récupérant le sujet pour trouver le mail (en ajoutant "oMail.Body").
Nouveau Code :
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
Sub NewAccountRequest()
 
Dim myOlApp As New Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Dim oMail As MailItem
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = myNamespace.Folders("Dossiers d'archivage").Folders("MAGIC")
Dim strName As String
 
For Each oMail In myInbox.Items
MsgBox oMail.Body     'm'aide à rechercher dans Outlook l'email pointé par la macro
    If oMail.Subject = "New Account Request" Then
        strName = myItem.EntryID
 
        myItem.SaveAs "C:MonRépertoireDestination\MonFichier" & ".txt", olTXT
        myItem.Move myDestFolder
        Set myItem = myItems.GetNext
    End If
Next myItem
End Sub
Résultat : C'est le dernier mail du dossier qui est pointé !
Or je souhaiterai que ce soit un mail non lu qui soit pointé puisque fraîchement entré. et en fait il faudrait que cette macro se déclenche seule à la réception d'un mail et que ce mail fraîchement arrivé soit l'objet auquel traité par la macro.
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h41   #11
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Bizzare bizzare ....



A propos de ceci :
Citation:
Envoyé par francky74 Voir le message
Lorsque j'effectue le pas à pas, quand j'arrive à la ligne :
Code :
For each oMail In myInbox.Items
je mets la souris sur myItem afin de "voir" quel état prends la variable, et je m'appercoit que la variable est le texte "tel" ....
Je pas comprendre pourquoi !
Vous trouvez pas bizzare que la commande "oMail" me donne le même résultat que la commande "oMail.Subject" ???

__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 14h50   #12
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par francky74 Voir le message
....
Vous trouvez pas bizzare que la commande "oMail" me donne le même résultat que la commande "oMail.Subject" ???:
Citation:
Envoyé par bbil Voir le message
oups ... en voyant ton dernier message je m'aperçoit de ton erreur dans ton code un coup tu utilise myITem et plus loin oItem ... il faudrait que tu te mette d'accord sur le nom de la variable ..

tant que tu as la souris en position clique avec le bouton droit et sélectionne ajouter un espion, ainsi dans la fenêtre espion en plus de la propriété par défaut (ici le sujet) tu pourra voir les autres propriétés de ton objet ..
..




Citation:
Envoyé par francky24
Or je souhaiterai que ce soit un mail non lu qui soit pointé puisque fraîchement entré. et en fait il faudrait que cette macro se déclenche seule à la réception d'un mail et que ce mail fraîchement arrivé soit l'objet auquel traité par la macro.
dans le premier exemple de code cité précédemment la fonction évènementielle de "ThisSession"
Code :
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
et comme son nom l'indique exécuté à la réception d'un nouveau mail..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 15h03   #13
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut :)

Merci d'insister BBIL !

Par contre je ne dois rien mettre dans les parenthèses .. n'est-ce pas ?

Penses-tu que cette macro puisse se lire si je reçois un mail pendant que je l'écrit ?
Parce que là je m'envoie ou me fait envoyer des emails mail la macro ne tourne pas !
et elle ne démarre pas avec F8
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h05   #14
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
cela devrait fonctionner, à par un problème de sécurité : vérifie que les macros soit bien activé ... et relance outlook au cas ou ...
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 15h16   #15
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut Macros activées et Outlook relancé

Ca fonctionne pas (Macros activées à l'ouverture d'OL et Outlook relancé)
Quand j'appuie sur F8, la macro ne se lance pas et quand on m'envoie un mail, elle ne fonctionne pas non plus.

Et si je remplace ceci :
Code :
Private Sub Application_NewMailEx(ByValEntreyIDCollection As String)
Par cela :
Comme ca ca fonctionne.

Ah et je viens d'enlever tout se qui se trouvait dans les parenthèses du Private Sub aussi ... ca marche avec le private Sub. Par contre elle ne se lance tjrs pas à la réception d'un mail.
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h37   #16
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut voici ou j'en suis

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
Private Sub Application_NewMailEx()
 
 
 
Dim myOlApp As New Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolder As Outlook.Folder
Dim myItems As Outlook.Items
Dim myItem As Object
Dim oMail As MailItem
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
Set myItems = myInbox.Items
Set myDestFolder = myNamespace.Folders("Dossiers d'archivage").Folders("MAGIC")
 
For Each oMail In myInbox.Items
    If oMail.Subject = "New Account Request" Then
        Set oMail = myItems.GetLast
        oMail.SaveAs "Chemin\New Account Request.txt", olTXT
        oMail.Move myDestFolder
    End If
Next oMail
 
End Sub
Ceci fonctionne très bien en pas à pas.
Seulement, il ne se lance pas à la réception de mail.
Et une erreur "incompatibilité de type" apparait une seule fois sur la ligne "Next oMail". après avoir cliqué sur "déboggage" cette erreur n'apparaît plus.
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h37   #17
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
as tu bien mis le code au bon endroit? Dans thesession? Dans ce cas tu nàs même pas besoin de saisir le nom de la fonction tu dois pouvoir le selectionner grace aux 2 combobox en haut de l'ecran
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/08/2011, 15h41   #18
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut endroit du code

J'ai mis le code dans une module (pas module de classe). Il y a pleins d'autres module pour d'autres macros.
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h42   #19
Membre régulier
 
Franck
Inscription : février 2008
Messages : 134
Détails du profil
Informations personnelles :
Nom : Franck
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 134
Points : 89
Points : 89
Par défaut marquer un message en "message lu"

PS : Je n'arrive pas à marquer un message en "message lu"
__________________
Pour ceux qui aiment l'art martial vietnamien, les photos du VietNam ou apprendre le Vietnamien venez visiter le site de notre asso "Noi Gia Vo Dao" :
http://ngvodao.free.fr

francky74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2011, 15h47   #20
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 847
Points : 16 847
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par francky74 Voir le message
J'ai mis le code dans une module (pas module de classe). Il y a pleins d'autres module pour d'autres macros.
Ben le code fourni est a mettre dans ThiSession ensuite cette fonction peu.tres bien faire appel a une de tes fonctions dans tes modules..
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h54.


 
 
 
 
Partenaires

Hébergement Web