Récupérer les adresses mail dans la boite de réception

Récupérer les adresses mail dans la boite de réception - Logiciels - Windows & Software

Marsh Posté le 26-01-2009 à 14:38:21    

Bonjour,
 
J'ai un fichier outlook *.pst, qui contient des messages. Aucune gestion des contacts, donc les adresses ne sont présentes que dans les emails. Je souhaite récupérer les adresses, soit dans la gestion des contacts d'Outlook, soit en txt, csv, xls ou que sais-je. Je n'ai pas envie de me taper 1000 mails un par un, pour les ajouter à mes contacts :/
 
Savez-vous si c'est possible ?
 
D'avance merci ;)

Reply

Marsh Posté le 26-01-2009 à 14:38:21   

Reply

Marsh Posté le 26-01-2009 à 22:08:20    

Bonsoir
 
Quelle version d'Outlook ?
Avec Excel, Access une petite routine en vba devrait permettre d'acceder a chaque mail, d'en recuperer l'adresse de l'expediteur, de regarder si on l'a deja, cas echeant l'ecrire dans Excel et/ou Access.
 
Cordialement


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 26-01-2009 à 22:46:35    

Hello,
 
merci de t'intéresser à mon triste sort ;)
 
Outlook 2003. Malheureusement, je n'ai pas le temps de me pencher sur une routine en vba, c'est pourquoi je me disais que, peut-être, quelqu'un avait déjà eu la même problématique que moi, et que, peut-être, il avait fait un bout de code quelque part pour régler ce problème, et que, peut-être, quelqu'un par ici savait ou dénicher ce bout de code :o
 
Ca en fait, des "peut-être", je sais :D
 
J'ai aussi la possibilité de faire glisser un par un les mails dans les "contacts" sous outlook express, puis de récupérer les contacts depuis express dans outlook, mais pareil, c'est fastidieux :/

Reply

Marsh Posté le 26-01-2009 à 22:51:38    

C'est pour quand ?
 
Tu me reponds "hier" tu sors ---)> [] :p


Message édité par SuppotDeSaTante le 26-01-2009 à 22:51:58

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 26-01-2009 à 23:38:29    

Bon allez, me suis un peu motivé ;)
 
Avec tous tes 'peut etre' j'ai eu de la peine :p
 
Pis le temps, on l'a si on veut  :kaola:  
 
Treve de plaisanterie ...
 
La macro pour Excel :
 

Code :
  1. Function MonaSoyoc ()
  2. On Error Resume Next
  3. Application.ScreenUpdating = False
  4.     'Créé la référence à l'objet boite de recetion --> dossier boite de reception d'outlook
  5.     Dim myOlApp, myNameSpace, myFolder, myNewFolder
  6.     Set myOlApp = CreateObject("Outlook.Application" )
  7.     Set myNameSpace = myOlApp.GetNamespace("MAPI" )
  8.     Set myNewFolder = myNameSpace.GetDefaultFolder(6) 'olFolderInbox)
  9.    
  10.    
  11.     'Compte le nombre d'objet dans le dossier
  12.     Dim nbmails
  13.     nbmails = myNewFolder.Items.Count
  14.     If nbmails = 0 Then
  15.         Exit Function
  16.     End If
  17.    
  18.     'Pour chaque objet...
  19.     For X = 1 To nbmails
  20.        
  21.         With myNewFolder.Items(X)
  22.                      
  23.             'Récupère l'émetteur (obligé de faire comme si on y repondait pour le recup dans l'expediteur)
  24.             Dim MSG, AdrMailEmetteur, RechercheTiers, DateMail, Obj, Corps, CorpsHTML
  25.             Set MSG = myNewFolder.Items.Item(X).Reply
  26.             AdrMailEmetteur = MSG.Recipients(1).Address
  27.             Set MSG = Nothing
  28.            
  29.             'Récupère la date du mail
  30.             DateMail = .CreationTime
  31.             DateMail = Format(DateMail, "dd/mm/yyyy" )
  32.            
  33.             'Récupère l'objet
  34.             Obj = .Subject
  35.            
  36.             'Récupère le texte
  37.             Corps = .Body
  38.             CorpsHTML = .HTMLBody
  39.  
  40.            
  41.             'Récupère les pièces jointes
  42.             Dim myAttachments
  43.             Dim CptePJ, NomPieceJ, CheminPJ
  44.             Set myAttachments = .Attachments
  45.             CptePJ = myAttachments.Count '- 1
  46.             Dim I As Integer
  47.             For I = 1 To CptePJ
  48.                 If myAttachments.Item(I).Filename <> "header.htm" Then
  49.                     NomPieceJ = myAttachments.Item(I).Filename
  50.                 End If
  51.             Next I
  52.         End With
  53.        
  54.         'a toi de choisir ce que tu veux mettre, j'ai tout mis au cas ou ca serve à d'autres... suffit juste d'enlever le '
  55.         Cells(1, 1) = "Doublons"
  56.         Cells(1, 2) = "Mail"
  57.         Cells(X + 1, 2) = AdrMailEmetteur
  58.         'Cells(X, 3) = Obj
  59.         'Cells(X, 4) = DateMail
  60.         'Cells(X, 5) = Corps
  61.         'Cells(X, 6) = CorpsHTML
  62.         'Cells(X, 7) = NomPieceJ
  63.        
  64.     Next X
  65.    
  66. Application.ScreenUpdating = True
  67.     Set myOlApp = Nothing
  68.     Set myNameSpace = Nothing
  69.     Set myNewFolder = Nothing
  70. End Function


 
Il va te mettre en colonne B d'excel tous tes emetteurs des mails de la boite de reception.
 
Ensuite en colonne A tu colles cette formule : =SI(EQUIV(B:B;B:B;0)=LIGNE(); 1;0)
Il faut que tu ai cette formule sur toutes les cellules de la colonne A, tu tires la formule jusqu'en bas quoi...
 
Ensuite tu vas dans Données, Filtre, Automatique.
Tu pioches "1" dans le filtre de la colonne A nommée "Doublons"
 
Et tu auras tous tes mails sans les doublons  
 
;)
 
[edit] dsl pour la guirlande de lolilol et smiley a la c** mais c'est tard ... [/edit]

Message cité 1 fois
Message édité par SuppotDeSaTante le 26-01-2009 à 23:51:49

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-01-2009 à 00:04:01    

SuppotDeSaTante a écrit :

Bon allez, me suis un peu motivé ;)
 
Avec tous tes 'peut etre' j'ai eu de la peine :p
 
Pis le temps, on l'a si on veut  :kaola:  
 
Treve de plaisanterie ...
 
La macro pour Excel :
 

Code :
  1. Function MonaSoyoc ()
  2. On Error Resume Next
  3. Application.ScreenUpdating = False
  4.     'Créé la référence à l'objet boite de recetion --> dossier boite de reception d'outlook
  5.     Dim myOlApp, myNameSpace, myFolder, myNewFolder
  6.     Set myOlApp = CreateObject("Outlook.Application" )
  7.     Set myNameSpace = myOlApp.GetNamespace("MAPI" )
  8.     Set myNewFolder = myNameSpace.GetDefaultFolder(6) 'olFolderInbox)
  9.    
  10.    
  11.     'Compte le nombre d'objet dans le dossier
  12.     Dim nbmails
  13.     nbmails = myNewFolder.Items.Count
  14.     If nbmails = 0 Then
  15.         Exit Function
  16.     End If
  17.    
  18.     'Pour chaque objet...
  19.     For X = 1 To nbmails
  20.        
  21.         With myNewFolder.Items(X)
  22.                      
  23.             'Récupère l'émetteur (obligé de faire comme si on y repondait pour le recup dans l'expediteur)
  24.             Dim MSG, AdrMailEmetteur, RechercheTiers, DateMail, Obj, Corps, CorpsHTML
  25.             Set MSG = myNewFolder.Items.Item(X).Reply
  26.             AdrMailEmetteur = MSG.Recipients(1).Address
  27.             Set MSG = Nothing
  28.            
  29.             'Récupère la date du mail
  30.             DateMail = .CreationTime
  31.             DateMail = Format(DateMail, "dd/mm/yyyy" )
  32.            
  33.             'Récupère l'objet
  34.             Obj = .Subject
  35.            
  36.             'Récupère le texte
  37.             Corps = .Body
  38.             CorpsHTML = .HTMLBody
  39.  
  40.            
  41.             'Récupère les pièces jointes
  42.             Dim myAttachments
  43.             Dim CptePJ, NomPieceJ, CheminPJ
  44.             Set myAttachments = .Attachments
  45.             CptePJ = myAttachments.Count '- 1
  46.             Dim I As Integer
  47.             For I = 1 To CptePJ
  48.                 If myAttachments.Item(I).Filename <> "header.htm" Then
  49.                     NomPieceJ = myAttachments.Item(I).Filename
  50.                 End If
  51.             Next I
  52.         End With
  53.        
  54.         'a toi de choisir ce que tu veux mettre, j'ai tout mis au cas ou ca serve à d'autres... suffit juste d'enlever le '
  55.         Cells(1, 1) = "Doublons"
  56.         Cells(1, 2) = "Mail"
  57.         Cells(X + 1, 2) = AdrMailEmetteur
  58.         'Cells(X, 3) = Obj
  59.         'Cells(X, 4) = DateMail
  60.         'Cells(X, 5) = Corps
  61.         'Cells(X, 6) = CorpsHTML
  62.         'Cells(X, 7) = NomPieceJ
  63.        
  64.     Next X
  65.    
  66. Application.ScreenUpdating = True
  67.     Set myOlApp = Nothing
  68.     Set myNameSpace = Nothing
  69.     Set myNewFolder = Nothing
  70. End Function


 
Il va te mettre en colonne B d'excel tous tes emetteurs des mails de la boite de reception.
 
Ensuite en colonne A tu colles cette formule : =SI(EQUIV(B:B;B:B;0)=LIGNE(); 1;0)
Il faut que tu ai cette formule sur toutes les cellules de la colonne A, tu tires la formule jusqu'en bas quoi...
 
Ensuite tu vas dans Données, Filtre, Automatique.
Tu pioches "1" dans le filtre de la colonne A nommée "Doublons"
 
Et tu auras tous tes mails sans les doublons  
 
;)
 
[edit] dsl pour la guirlande de lolilol et smiley a la c** mais c'est tard ... [/edit]


 
Non mais tu sais que tu es terrible toi ? :D
J'essaye ça demain, et si ça marche, j'reviens ici me prosterner devant toi :o

Reply

Marsh Posté le 27-01-2009 à 00:07:56    

J'attends j'attends.... :d
 
Ce coup la, au lit pour ma part.
 
Tiens moi au jus ;)


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-01-2009 à 00:11:37    

J'y vais aussi. J'te dis ça demain :D
ciao bye ;)

Reply

Marsh Posté le 27-01-2009 à 09:43:50    

                   dje69r
 
[:roi]
 

Spoiler :


Je n'ai qu'une parole :D

Reply

Marsh Posté le 27-01-2009 à 10:26:56    

Au fait, j'aurais encore une toute petite question :o
j'ai commencé à bidouiller dans ton code, car en fait j'aimerais récupérer les adresses de la boite de réception, mais aussi des éléments envoyés, et des sous-dossiers de la boite de réception.
 
Tu crois que tu pourrais me donner une astuce pour attribuer les valeurs correctes à MyNewFolder ?
 

Citation :


Set myNewFolder = myNameSpace.GetDefaultFolder(6) 'olFolderInbox)


 
6 c'est la boite de réception, c'est bien ça ?
Il faut mettre quoi pour les autres, et pour obtenir la récursivité ?
 
Sans vouloir abuser [:meganne]

Reply

Marsh Posté le 27-01-2009 à 10:26:56   

Reply

Marsh Posté le 27-01-2009 à 12:21:22    

LOL ! ! ! !
 
Alors pour un sous dossier de la boite de reception ca serait un truc comme ca :
Set UnderFolder = myNewFolder .Folders("Nom de ton dossier" )
 
Pour la boite d'envoi :
Set SendFolder = myNameSpace.GetDefaultFolder(olFolderOutbox)
A verifier avec olFolderSentMail j'ai pas verifier
 
Et par contre pour la boite d'envoi, il faut ta boucle dedans aussi ;)
Sauf que tu n'es pas obligé de simuler une reponse pour connaitre l'expediteur. La tu as juste besoin du destinataire.


Message édité par SuppotDeSaTante le 27-01-2009 à 13:02:33

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 28-01-2009 à 08:34:02    

Bon, ben je vais essayer ça :o
Le problème, c'est qu'en plus de ne pas connaître vba (mais bon, je connais Delphi), je ne connais pas le mode de pilotage d'outlook.
 
En tous cas, une fois au point, je le mettrai de côté, ton truc :D
 
Faut que j'arrive à parcourir TOUS les dossiers, récursivement, d'un .pst.
 
En fait, faudrait qu'on puisse ouvrir un .pst par un "parcourir", et qu'on nous propose la liste de tous les dossiers et sous dossiers qu'il contient. On pourrait alors sélectionner par case à cocher ceux qu'on veut parcourir, et paf, on ramène ça dans la colonne B.
 
YAKAFOKON \o/

Reply

Marsh Posté le 29-01-2009 à 08:33:02    

Automatiser l'import d'un pst, en vba, a partir d'Excel, je ne vois pas trop ca possible.
Il y aura forcement des manips manuelles.
Apres, rien ne t'empeche de passer des arguments a une fonction, au lieu de passer par un sub.
 
As tu reussi a recuperer les mails de la boite d'envoi ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 29-01-2009 à 08:45:10    

Je m'y mets ce matin, à la boite d'envoi :o
J'étais débordé hier :D
Oui, ça ne me dérange pas d'appeler 8 fois la même fonction avec le nom du sous-dossier en paramètre, par exemple.

Reply

Marsh Posté le 05-02-2009 à 17:19:17    

Désolé, la tête dans le guidon en ce moment :o
Donc c'est bon pour les éléments envoyés et pour la boite de réception, j'ai bien mis au chaud ton code, je pense qu'il serait intéressant de pouvoir faire un code unique, avec appel à une fonction qui contiendrait deux paramètres :

 

- le nom du dossier à explorer
- son type (envoi / réception)

 

il suffirait dans le code de provoquer la réponse uniquement dans le cadre de la boite de réception, et ce qui serait encore mieux, c'est de mettre en feuil3 colonne A la liste des noms des dossiers qu'on veut récupérer, et en colonne B leur type (envoi / réception)

 

Bref, y a du potentiel :D

 

Merci encore ;)


Message édité par Mona Soyoc le 05-02-2009 à 17:19:38
Reply

Marsh Posté le 06-02-2009 à 11:07:05    

Le nom du dossier etant une chaine, rien n'empeche de la remplacer par une variable contenant une chaine.
 
Pour le code unique je suis pas forcement pour. Il vaut mieux deux fonctions, une pour la boite de reception (et dossiers), une pour la boite d'envoi (et dossier). Puis par le biais d'une autre fonction, en fonction de ce que tu as dans tes cellules, tu appelles telle ou telle fonction, ou les deux.


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed