Bonjour,
Je cherche à récupérer les adresses mail par liste de diffusion, comment puis-je faire ?
Merci d'avance
Bonjour,
Je cherche à récupérer les adresses mail par liste de diffusion, comment puis-je faire ?
Merci d'avance

En cherchant un peu tu tombes sur ce tutoriel:
http://dolphy35.developpez.com/article/outlook/vba/
Le code suivant permet de lister tous les contacts de chaque liste de diffusion:
Il faut activer la référence 'Microsoft Outlook xx.x Object Library' ou sinon tu repasses tout en 'late binding'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31 Option Explicit Public Sub ListeDiffusion() Dim i As Integer, j As Integer Dim myOlApp As Outlook.Application Dim myOlNmp As Outlook.Namespace Dim myOlLst As Outlook.Items Set myOlApp = New Outlook.Application Set myOlNmp = myOlApp.GetNamespace("MAPI") Set myOlLst = myOlNmp.GetDefaultFolder(olFolderContacts).Items For i = 1 To myOlLst.Count If TypeName(myOlLst.Item(i)) = "DistListItem" Then 'Nom de la liste de contact Debug.Print (myOlLst.Item(i)) 'Lister les adresses mail associées à la liste de contact For j = 1 To myOlLst.Item(i).MemberCount Debug.Print (myOlLst.Item(i).GetMember(j).Address) Next j End If Next Set myOlLst = Nothing Set myOlNmp = Nothing Set myOlApp = Nothing End Sub
Dernière modification par Invité ; 31/07/2013 à 11h34.
Merci,
C'est un bon début, mais apparament on peut créer des listes, mais je trouve rien pour les répertorier, les lire et extraire les adresses mail.
Merci d'avance, à ceux qui feront avancer mon problème.

J'ai répondu à ta question initiale qui consistait à récupérer les adresses mail par liste de diffusion.
Tu n'as pas précisé que tu voulais en créer de nouvelles...
Non, c'est ça, je veux pas en créer mais bien lire celles existantes.
Le code fonctionne mais ne me ramène rien.
En fait j'ai un outlook mais qui est connecté avec Zimbra (webmail).
C'est peut etre pour ca !!!

La version pour créer des listes et ajouter des contacts (ça peut toujours servir):
Sinon le dossier ou sont récupérées les listes est définit ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Option Explicit Public Sub ListeDiffusion() Dim i As Integer, j As Integer Dim myOlApp As Outlook.Application Dim myOlNmp As Outlook.Namespace Dim myOlLst As Outlook.Items Dim myOlDli As Outlook.DistListItem Dim myOlCtm As Outlook.ContactItem Dim myOlRpt As Outlook.Recipients Set myOlApp = New Outlook.Application Set myOlNmp = myOlApp.GetNamespace("MAPI") Set myOlLst = myOlNmp.GetDefaultFolder(olFolderContacts).Items 'Lister les adresses mail des listes de diffusion For i = 1 To myOlLst.Count If TypeName(myOlLst.Item(i)) = "DistListItem" Then 'Nom de la liste de contact Debug.Print (myOlLst.Item(i)) 'Lister les adresses mail associées à la liste de contact For j = 1 To myOlLst.Item(i).MemberCount Debug.Print (myOlLst.Item(i).GetMember(j).Address) Next j End If Next 'Créer une liste de diffusion Set myOlDli = myOlApp.CreateItem(olDistributionListItem) myOlDli.DLName = "Nouvelle Liste" myOlDli.Save 'Création d'un contact Set myOlCtm = myOlApp.CreateItem(olContactItem) With myOlCtm .FullName = "Test" .Email1Address = "test.test@test.fr" End With 'Ajout du contact à la liste Set myOlRpt = myOlApp.CreateItem(olMailItem).Recipients myOlRpt.Add myOlCtm.FullName & " " & myOlCtm.Email1Address myOlRpt.ResolveAll myOlDli.AddMembers myOlRpt 'Enregistrement myOlDli.Save Set myOlApp = Nothing End Sub
Et qui correspond au dossier standard 'Contacts'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set myOlLst = myOlNmp.GetDefaultFolder(olFolderContacts).Items
Il faut donc que tu adaptes le dossier de recherche à ta situation.
Partager