Bonjour,
Avec ce code ci dessous je pouvais synchroniser outlook 2003 avec access 2003
C'est vieux tout ca et forcement je dois passer ca sous outlook 2010 et access 2010...
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232 'Dans un module : Public Sub ParcourirContact() '************************************************************************* ' Routine qui va parcourir les enregistrements présents dans le répertoire ' contacts et copier les enregistrements manquants dans la base de données ' Macro crée pour article DVP par Olivier Lebeau '************************************************************************* Dim oCont As ContactItem Dim oFold As MAPIFolder Dim nM As NameSpace Dim olApp As Outlook.Application Dim i As Integer Dim j As Integer j = 1 ' Affectation des objets Set olApp = CreateObject("Outlook.Application") Set nM = olApp.GetNamespace("MAPI") Set oFold = nM.GetDefaultFolder(olFolderContacts) i = oFold.Items.Count ' Boucle pour parcourir les contacts locaux For j = 1 To i ' Appel à la fonction AccesADB avec comme paramètre le contactItem AccesADB (oFold.Items(j)) Next j End Sub Public Function AccesADB(mycont As ContactItem) '************************************************************************** ' Fonction appelée pour envoyer vers la base de données les nouveaux ' contacts ' Fonction écrite pour article DVP par Olivier Lebeau '************************************************************************** On Error Resume Next Dim db As DAO.Database Dim rs As DAO.Recordset Dim sql As String sql = "SELECT Contacts.*, Contacts.[Nom], Contacts.[Prénom]" sql = sql & " FROM Contacts " sql = sql & " Where Contacts.[Nom] = """ & mycont.LastName sql = sql & """ AND Contacts.[Prénom] = """ & mycont.FirstName & """;" ' Debug.Print sql ' Vous devez spécifier le chemin complet de votre base de données Set db = OpenDatabase("C:\tempAcc\contacts.mdb") Set rs = db.OpenRecordset(sql) ' Debug.Print rs.RecordCount '********************************************************************** ' La liste des champs traités peut être augmentée en fonction de vos ' besoins. Par facilité, je n'ai volontairement mis que 3 champs ' Si vous rencontrez des problèmes avec les lignes Fields("xxxxx") ' je vous conseille d'utiliser l'index du champ Fields(2) '********************************************************************** If rs.RecordCount = 0 Then rs.AddNew rs.Fields(2) = Nz(mycont.LastName, " ") rs.Fields(3) = Nz(mycont.FirstName, " ") rs.Fields(4) = mycont.Email1Address rs.Fields(1) = Nz(mycont.CompanyName, " ") rs.Update End If '********************************************************************** ' Libération des objets '********************************************************************** rs.Close db.Close Set rs = Nothing Set db = Nothing End Function Public Sub MettreAJourContact() '****************************************************************************** ' Procédure pour récupérer les enregistrements présents dans la base de ' données et les injecter dans le répertoire contact. '****************************************************************************** On Error Resume Next Dim oCont As ContactItem Dim oCo As ContactItem Dim oFold As MAPIFolder Dim nM As NameSpace Dim olApp As Outlook.Application Dim stFilt As String Dim rs As DAO.Recordset Dim db As DAO.Database '****************************************************************************** ' Affectation des objets '****************************************************************************** Set db = OpenDatabase("C:\tempAcc\contacts.mdb") Set rs = db.OpenRecordset("Select * From Contacts") Set olApp = CreateObject("Outlook.Application") Set nM = olApp.GetNamespace("MAPI") Set oFold = nM.GetDefaultFolder(olFolderContacts) '****************************************************************************** ' Boucle pour parcourir les enregistrements de la table '****************************************************************************** While Not rs.EOF 'Filtre pour recherche des données déjà existantes dans les contacts locaux stFilt = "[FirstName] = """ & rs.Fields(3) stFilt = stFilt & """ And [LastName] = """ & rs.Fields(2) & """" ' Recherche avec filtre Set oCo = oFold.Items.Find(stFilt) ' procédure décisionnelle pour copie des données If oCo = "Nothing" Then ' Si pas de données, on les ajoute Set oCont = oFold.Items.Add oCont.FirstName = rs.Fields(3) oCont.LastName = rs.Fields(2) oCont.Email1Address = rs.Fields(4) oCont.CompanyName = rs.Fields(1) oCont.Save End If ' Déplacement vers l'enregistrement suivant. rs.MoveNext Wend ' Libération des objets rs.Close db.Close Set rs = Nothing Set db = Nothing End Sub 'A placer dans outlookthissession Private Sub Application_Startup() Dim strFichier As String strFichier = "C:\tempAcc\contacts.mdb" If Dir(strFichier) <> "" And strFichier <> "" Then MettreAJourContact ParcourirContact MsgBox "Base de données Access synchronisée !" Else MsgBox "La Base de n'est pas accessible ! Vérifiez la connexion réseau ! La synchronisation ne peut se faire !", vbInformation End If End Sub Private Sub Application_Quit() Dim strFichier As String strFichier = "C:\tempAcc\contacts.mdb" If Dir(strFichier) <> "" And strFichier <> "" Then MettreAJourContact ParcourirContact MsgBox "Base de données Access synchronisée !" Else End If End Sub
C'est quoi qui a changer entre 2003 et 2010 ?
Coté message d'erreur sous Outlook 2010 ce n'est pas top, juste "variable non definie".. rien d'autre
seb
Partager