Outlook extraire adresses emails des emails ?

Résolu/Fermé
Charlie - Modifié le 22 mai 2018 à 08:18
 hamza - 18 juin 2019 à 12:59
Bonjour,
comment peut on extraire les adresses emails des emails d'un dossier de Outlook pour en faire un fichier .csv
merci
Charles
A voir également:

53 réponses

inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
2 juil. 2009 à 00:45
j'ai essayer avec imap, pas de pb
je n'ai pas 2002 peut être ?
si non dans le debugeur clic droit sur myMailItem fait ajouter espion ... puis ok , il doit y avoir un plus regarde si SenderEmailAddress et SenderName existe ?
0
Salut Inpec,

J'ai fais comme tu m'as dit....(ajouter un espion sur myMailItem)...

Je trouve bien SenderName, mais pas SenderEmailAddress ....

Si je met un espion sur myMailItem.SenderName, il me trouve bien le "nom" de l'émetteur, mais si je met un espion sur myMailItem.SenderEmailAddress, l'espion me dit : ''Propriété ou méthode non gérér par cet objet".

Voila !

Encore mille merci !
0
bg62 Messages postés 23652 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 29 octobre 2024 2 384
27 août 2009 à 09:27
euh ... (j'insiste ... mais bon ...) pour windows mail ... toujours rien ?
ou si je copie les fichiers *.eml dans un dossier à part, peut-on y arriver ? et comment ?
@+
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
27 août 2009 à 09:45
Il y a du VBA sous Windows Mail ?
Essaie alt+F11 pour faire apparaitre la fenêtre Microsoft Visual Basic.
Pas de VBA => Il faut passer sous Outlook
0
bg62 Messages postés 23652 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 29 octobre 2024 2 384
27 août 2009 à 09:54
"alt+F11 " ne donne rien ...
quant au retour vers outlook pas évident sous Vista !
La seule possibilité que j'aurais éventuellement est de mettre tous ces fichiers dans un dossier "normal" pour aller y cherche les adresses ... mais là comment faire ? ça dépasse mes compétences ...
:)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
27 août 2009 à 10:10
et tu fais un glissé déplacé des fichiers vers Outlook. (Ctrl+a pour tous les sélectionner)
0
bg62 Messages postés 23652 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 29 octobre 2024 2 384
27 août 2009 à 10:11
je n'ai pas outlook ....
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
27 août 2009 à 11:21
Merci
0
Merci beaucoup Inpec pour la fonction et ses nombreux ajustements! Ca marche vraiment super bien et ça m'a fait gagner énormément de temps! Quel dévouement!
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
31 août 2009 à 14:21
Re-Merci ;)
Je devais bien ça au net !!
0
clem_qui_depanne
16 sept. 2009 à 15:51
Bonjour,

Je relance ce forum qui m'a bien aidé mais :

J'utilise outlook 2002

Il semble que myMailItem.SenderEmailAddress ne soit pas connu dans la librairie installée
Microsoft Outlook 10.0 Object library.

J'ai besoin de récupérer les adresses mails des expéditeurs des mails reçu dans un dossier donné.

Avez vous des coneils.

Si il faut installé une nouvelle library : help.

En vous remerciant par avance
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
17 sept. 2009 à 00:40
Tu semblerais avoir le même problème que ioton12 qui nous donne sa solution message 42 :
j'ai enfin trouvé, j'ai remplacer "myMailItem.SenderName", myMailItem.SenderEmailAddress par "findMail myMailItem.SenderName".(...)


j'en ai déduis que SenderName devait contenir l'e-mail de l'expéditeur sous 2002 ...
sinon ajoute un espion sur myMailItem (clic droit sur myMailItem, Ajouter un espion...), tu devrais trouver la propriété qui le fait bien

sinon je t'ai déposé Microsoft Outlook 11.0 Object library ici : http://www.inpec.fr/MSOUTL.OLB en espérant qu'il se suffit à lui même !
Pour l'installer Menu outils dans VBA(alt+f11) ,Références,parcourir choisi le fichier téléchargé msoutl.olb
0
kudzou35 Messages postés 4 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 23 septembre 2009 8
23 sept. 2009 à 16:40
Bonjour,

Merci Inpec pour les informations.

Pour la ref : elle ne peut pas se mettre sur outlook2002
Pour myMailItem.SenderName , il ne renvoit que le titre de la personne soit robert dupont
et non l'adresse e-mail.

En vous remerciant par avance pour vos autres lumières
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
23 sept. 2009 à 17:14
Alysse, normalement c'est que font les lignes :
            'Destinataires
            For Each myItemRec In myMailItem.Recipients
                addMail myItemRec.name, myItemRec.Address
            Next
0
merci pour la reponse,

j ai bien reussi à utiliser le code pour la creation d'un nouveau email mais les derniers codes avec lien avec excel ne marchent pas.
j ai un probleme sur la ligne : Open NomFichier For Output As #1
je suis sous outlook 3

je suis nulle en informatique (d'ailleurs ce n est pas mon metier), c est juste qu'une erreur a été faite en effaçant une liste de contacts sous outlook, j ai jsute un email avec les mails en cci, je n arrive pas à les recuperer, il me sembalit que ce code pouvait convenir, mais je n ai pas forcement besoin d'un tableau excel

voila, je suis un peu paumee....
alysse
0
kudzou35 Messages postés 4 Date d'inscription lundi 21 septembre 2009 Statut Membre Dernière intervention 23 septembre 2009 8
23 sept. 2009 à 17:15
C'est bon j'ai trouvé ma solution

grâce à https://support.microsoft.com/fr-fr/help/324530

bonne continuaation à tous

'Déclaration des tableaux dynamiques globaaux contenant la liste des emails
Dim emails(), noms() As String
'Extrait dans Outlook la liste des emails (destinataire, émetteur, corp) du dossier sélectionné
'et crée un mail avec la liste des emails

Sub GetEmail()
Dim myOlApp As New Outlook.Application
Set rep = myOlApp.ActiveExplorer.CurrentFolder
' initialisation du tableau
ReDim Preserve emails(1), noms(1)
emails(1) = ""
noms(1) = ""
'On stocke les emails dans le tableau
GetEmailFromFolder rep
If emails(1) <> "" Then
NomFichier = "email-" & rep & ".xls"
Close #1
Open NomFichier For Output As #1
For i = 1 To UBound(emails)
Print #1, AfficheEmail(noms(i), emails(i))
Next
Close #1
Call Shell("excel.exe " & """" & NomFichier & """")
'Conversion du tableau en chaine
MsgBox UBound(emails) & " emails trouvés dans " & rep, vbInformation, "Done"
Else
MsgBox "Pas d'email trouvé dans " & rep, vbInformation, "Done"
End If

End Sub
Function AfficheEmail(Nom, Email)
If Nom = "" Then
'Si pas de nom on utilise la partie gauche de l'email
Nom = Mid(Email, 1, InStr(Email, "@") - 1)
End If
'Mise en forme du nom pour être bien reconnue par Outlook si on copie colle la liste dans le champs [À...]
Nom = Replace(Nom, ",", " ")
Nom = Replace(Nom, "@", "-")
Nom = Replace(Nom, ";", " ")
Nom = Replace(Nom, "'", "")
Nom = Replace(Nom, "[", "")
Nom = Replace(Nom, "]", "")
Nom = Replace(Nom, "(", "")
Nom = Replace(Nom, ")", "")
'AfficheEmail = """" & Nom & """[" + Email + "]"
'AfficheEmail = "<A href=""mailto:" & Email & """>" & Nom & "</A>"
'AfficheEmail = """" & Nom & """<" + Email + ">"
AfficheEmail = Nom + vbTab + Email + vcrlf
End Function
'Explore les dossiers (fonction réentrante)
Sub GetEmailFromFolder(MyFolder)
Dim myItemRec, myItem As Object
Dim myMailItem As Outlook.MailItem

Dim objItem As MailItem
Dim objReply As MailItem
Dim objRecips As Outlook.Recipients
Dim objRecip As Outlook.Recipient


'Tous les dossiers
For Each myItem In MyFolder.Folders
GetEmailFromFolder myItem
Next
'Tous les mails
On Error Resume Next
For Each myItem In MyFolder.Items
If TypeName(myItem) = "MailItem" Then
Set myMailItem = myItem
'Destinataire

'Emetteur

Set objItem = myItem
Set objReply = objItem.Reply

Set objRecips = objReply.Recipients
For Each objRecip In objRecips
addMail myMailItem.SenderName, objRecip.Address
Next

Set objItem = Nothing
Set objReply = Nothing
Set objRecip = Nothing



'et dans le corp du mail
findMail myMailItem.Body
End If
Next



Set objItem = Application.ActiveInspector.CurrentItem
Set objReply = objItem.Reply

Set objRecips = objReply.Recipients
For Each objRecip In objRecips
Debug.Print objRecip.Address
Next

Set objItem = Nothing
Set objReply = Nothing
Set objRecip = Nothing





End Sub
'Rajoute une entrée au tableau emails() si l'email n'existe pas déjà
Sub addMail(Nom, Email)
Email = Trim(LCase(Email))
Nom = Trim(Nom)
If Email <> "" And InStr(Email, "@") > 0 And InStr(Email, ".") > 0 Then
'Vérification de l'unicité
Find = UBound(Filter(emails, Email, True, vbTextCompare))
If emails(1) = "" Then
emails(1) = Email
noms(1) = Nom
ElseIf Find = -1 Then
'On augmente la taille du tableau et on ajoute
ReDim Preserve emails(UBound(emails) + 1)
ReDim Preserve noms(UBound(noms) + 1)
emails(UBound(emails)) = Email
noms(UBound(noms)) = Nom
Else
'On préfère le plus grand si c'est pas une email
If Len(Nom) > Len(noms(Find)) And InStr(Nom, "@") = 0 Then
noms(Find) = Nom
End If
End If
End If
End Sub
Sub findMail(Body)
at = InStr(Body, "@")
Do While at > 0
d = at - 1
Do While carOk(Mid(Body, d, 1))
d = d - 1
If d = 0 Then
Exit Do
End If
Loop
f = at + 1
Do While carOk(Mid(Body, f, 1))
f = f + 1
If f = Len(Body) Then
Exit Do
End If
Loop
If d < at - 3 And f > at + 4 Then
addMail "body", Mid(Body, d + 1, f - d - 1)
End If
at = InStr(at + 1, Body, "@")
Loop
End Sub
Function carOk(c)
If c = "." Or c = "-" Or c = "_" Or (c >= "0" And c <= "9") Or (c >= "A" And c <= "Z") Or (c >= "a" And c <= "z") Then
carOk = True
Else
carOk = False
End If
End Function
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
24 sept. 2009 à 13:24
pour le problème avec le fichier xls, c'est peut être qu'il est déjà ouvert ?
sinon sur le fond
as-tu regardé dans tes éléments supprimés ?
si c'est toi qui a envoyé le mail tu en as une copie dans les éléments envoyés et retrouvera là, la liste des destinataires cci.
si tu as reçu ce mail uniquement ( tu étais donc un destinataire cci de ce mail) il est IMPOSSIBLE de connaitre les autres destinataires de ce mail, c'est le principe.
0
merci pour la réponse
pour le fichier xls, il n etait pas ouvert( j ai du oublier qq chose dans le code qui doit etre evident, je n ai fais qu'un copie/coller)

sinon, ce n est pas moi qui est envoye le mail, c est sur un autre ordinateur, comme autre solution je cherche juste à exporter le mail avec les destinataires en cci pour que je puisse recreer la liste de distribution de mon ordi, mais si je transfere le mail je ne recois pas les cci si on fait un copie coller de l autre ordi, on ne copie que les noms des destinataires (sans les mails), il y a peut etre une astuce toute bete, je ne l ai pas trouvé...
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
29 juin 2010 à 06:55
en fait le pb viens des accents dans le nom du fichier xls (j'ai rencontré récemment le ce soucis sur un 2003 server x64)
0
Bonjour,

J'ai un soucis avec la macro, ca doit être une bétise, mais il m'indique quand je la lance , erreur d'execution 75 - erreur d'accès chemin fichier. c'est au niveau de la ligne nomfichier, je pense que c'est la ligne qui crée le XLS, mais je ne vois pas ce qu'il faut modifier.

Faut il créer au paravant ce fichier?

Merci pour votre réponse.

A bientôt.

Nico
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
29 juin 2010 à 06:49
en fait le pb viens des accents dans le nom du fichier j'ai rencontré le pb sur un 2003 server x64
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
29 oct. 2009 à 10:43
Non il ne faut pas créer le fichier
Votre fichier doit déjà être ouvert par Excel , au pire relacez votre machine.
ou remplacez la ligne
NomFichier = "email-" & rep & ".xls"
par
NomFichier = "c:\le chemin ou j'ai le droit de créer un fichier sur ma machine\email-" & rep & ".xls"
ou bien
NomFichier = "c:\email-" & rep & ".xls"
0
Houlala, je ne pige rien aux solutions et pourtant, j'ai un dossier nommé "prespection-envoyés"dans outlook 2003 et j'aimerais bien me faire un fichier avec tous les mails à qui j'ai envoyé un truc. Mais ils sont tellement nombreux que ça me donne le vertige de le faire manuellement.
Quelqu'un peut me donner une solution adaptée à mon cas ?
Merci 1000 fois par avance !
Francois
0
stephOffice
27 nov. 2009 à 14:17
Bonjour,

Inpec tu es un dieu, ta solution marche nickel chrome :) et après pas mal de recherche sur le web je n'en ai pas trouvé de mieux.

Bravo!
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
27 nov. 2009 à 14:27
Merci !
0
Bonjour !

Désolé, je vais vous paraitre stupide mais je n'y arrive pas, je reçois le message "Erreur de compilation" END SUB ATTENDU.

J'ai outlook 2003 et je veux récupérer les mails d'un dossier appelé "DIR COM".

Merci d'avance pour vos réponses !

Fenlabiz
0
Bonjour,

Comment faire pour des super grosses boite ( +34.000 mails)?
on ne peut autoriser le script que pour une durée maximum de 10 minutes. Y-a-t-il moyen d'augmenter, voir passer outre cette limite?

Merci d'avance pour les réponses.
0
inpec Messages postés 33 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 31 octobre 2016 6
29 juin 2010 à 06:46
je te ferais qq chose dans la V3
0