Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook

Réponse
 
Outils de la discussion
Vieux 06/11/2008, 15h43   #1 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut [VBA - Outlook] Comment récuperer adresse mail destinataire ?

Bonjour à tous.

Je suis dans le cas de figure suivant : Ma société a changé de nom; de toto elle s'appelle désormais totobibi.

De nouvelles adresses mail XXX@totobibi.fr ont été créées.
Cependant les commerciaux et d'autres personnes continuent de recevoir des mails sur XXX@toto.fr donc ils ont 2 comptes sur Outlook (un en toto.fr et un en totobibi.fr).

Mon responsable souhaite supprimer les toto.fr au 31 Decembre et il veut donc que je programme un script qui ;

- Créé un dossier XXX@toto.fr (facile j'ai fait une box où machintruc rentre son nom).

- Les mails reçus sur le compte @toto.fr soient automatiquement classés à leur réception dans le dossier XXX@toto.fr

C'est là mon problème : pas moyen de savoir si le mail reçu a été envoyé vers le compte toto.fr (donc action) ou le compte totobibi.fr (donc rien) ?

Avez vous une idée pour m'aider svp ?

NOTE : vu le nombre de personnes concernées, créer une règle à la main sur chaque poste est exclu.
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/11/2008, 18h22   #2 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

Salut,
il faut utiliser une dll spécifique REDEMPTION.
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 10/11/2008, 14h31   #3 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Citation:
Envoyé par Oliv- Voir le message
Salut,
il faut utiliser une dll spécifique REDEMPTION.
Merci, tu peux m'en dire plus s'il te plait ?
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 10h01   #4 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

J'arrive à scanner un dossier pour récupérer les sujets des mails, mais je n'arrive pas à en récuperer l'adresse du destinataire, même avec Redemption, Quelqu'un saurait m'aider svp ?

Ce script doit marcher pour la fin de semaine prochaine et je désespère, je sens que je vais me tapper la création de règle sur les 80 boites mail à traiter ...
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 11h53   #5 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

SAlut,
Tu as donc trouvé REDEMPTION

voic un ex:
Code :
 
Sub testrdo()
 
Set SessionRDO = CreateObject("Redemption.RDOSession")
SessionRDO.Logon
Set Inbox = SessionRDO.GetDefaultFolder(olFolderInbox)
On Error Resume Next
For Each msg In Inbox.Items
 
Debug.Print (msg.Account.Name)
MsgBox msg.Account.Name
Next
 
End Sub
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 12h18   #6 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Sympa ton script mais il n'y a pas de convention de nommage des comptes dans ma boite donc je ne peux pas m'appuyer sur le nom de l'account pour pouvoir trier les mails ...
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 12h20   #7 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

Eh bien tu peux utiliser d'autres propriétés de ACCOUNT non ?
http://www.dimastr.com/redemption/rdo/RDOAccount.htm
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 12h26   #8 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

En utilisant Smtpaddress a la place de name ça devrait le faire ... Merci, je teste et je reviens pleurer si ça marche pas !

MERCI
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 16h21   #9 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Bon,

j'arrive bien grace a "msg.Account.POP3_Server" à déterminer les messages qui seront à déplacer.

Le problème suivant est comment les déplacer ?
Y'a t'il un "msg.Move" possible ?

Merci ...
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 16h40   #10 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

je ne trouve pas comment faire un move de mes messages avec Redemption, j'ai l'impression que je peux seulement consulter des propriétés ... Je me trompe ? Comment procéder ?

J'ai éssayé :

Inbox.Items.Move ("dossier de classement")

Mais vraisemblablement ça ne fonctionne pas car mes messages ne bougent pas ...
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 16h55   #11 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

Redemption permet de faire plus que le com OUTLOOK, tu as sans doute oublié de lui mettre un paramétre.

Code :
Msg.Move(DestFolder)

Tu peux aussi utiliser des fonctions outlook et REDEMPTION dans le même code.
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 17h04   #12 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Code :
Sub ScanInbox()
 
    Dim ServeurPop As String
    Set SessionRDO = CreateObject("Redemption.RDOSession")
    SessionRDO.Logon
    Set Inbox = SessionRDO.GetDefaultFolder(olFolderInbox)
    On Error Resume Next
        For Each Msg In Inbox.Items
            Debug.Print (Msg.Account.POP3_Server)
            ServeurPop = Msg.Account.POP3_Server
            If ServeurPop = "pop.magic.fr" Then
                Msg.Move (test)
                MsgBox ("message trouvé et déplacé dans le dossier test")
            End If
        Next
End Sub
Voilà mon code actuellement, mais même si je n'ai pas d'erreur, les messages concernés ne sont pas déplacés (alors que j'ai bien la MsgBox correspondante pour chaque message trouvé).

Je sais que je suis une quiche mais je suis obligé d'apprendre en même temps que je fais ... Et j'avoue que je ne suis pas à l'aise avec la programmation orientée objet (ce dont tu as déjà du te rendre compte), c'est un peu de la bidouille copier/coller mais j'ai pas le choix ...
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 17h32   #13 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

En fait met un ' devant on error ... comme cela tes messages d'erreurs vont remonter une fois ton code correct tu peux enlever le commentaire sur cette ligne.

c'est parce que test n'est pas défini et ne représente pas un dossier.
essaye avec
Code :
Msg.Move Inbox.folders("test")
le sous dossier test doit exister
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 17h53   #14 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Citation:
Envoyé par Oliv- Voir le message
En fait met un ' devant on error ... comme cela tes messages d'erreurs vont remonter une fois ton code correct tu peux enlever le commentaire sur cette ligne.

c'est parce que test n'est pas défini et ne représente pas un dossier.
essaye avec
Code :
Msg.Move Inbox.folders("test")
le sous dossier test doit exister
Oui effectivement merci bien ça fonctionne parfaitement, merci pour ton aide sans toi j'étais dans la merde.

L'étape suivante est que le script doit checker à chaque arrivée de mail si c'est un mail correspondant à
Code :
Msg.Account.POP3_Server = "pop.magic.fr"
, je vais éssayer de transformer ma fonction tout seul, si j'ai un soucis (ce qui vu ma nullité en VBA ne devrait pas tarder, je me permettrais de venir te solliciter encore
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 12/11/2008, 18h34   #15 (permalink)
Invité régulier
 
Date d'inscription: octobre 2006
Messages: 13
Par défaut

Je comptais placer mon script dans une règle "à l'arrivée de chaque nouveau message" mais par quoi remplacer
Code :
For Each Msg In Inbox.Items
afin que mon test

Code :
If ServeurPop = "pop.magic.fr" Then
   Msg.Move Inbox.Folders(adressegeta)
End If
Ne s'éxécute pas sur toute la boîte de réception à chaque arrivée de nouveau mail ? (ce qui va beaucoup trop ralentir Outlook)
Murmure est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide