Bonjour à tous,
j'effectue le parcours d'un document Word contenant des adresses mails et je veux les ajouter à une BDD sans créer de doublons. Pour cela, j'effectue, pour chaque mail, un test de présence dans la BD et si il n'est pas présent je l'ajoute (sinon je ne l'ajoute pas).
Le problème est que je n'arrive pas à mettre à jour le recordset à chaque fois que j'examine un mail. Comment faire ?
J'ai essayé de rédéfinir à chaque fois le Recordset, et j'ai essayé aussi les méthodes "Requery", "Update".
Voici mon code :
Je vous remercie par avance.
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 Public Sub ExportContacts() '****************************************************' '******************* Déclarations *******************' '****************************************************' Dim objWApp As Word.Application Dim WordDoc As Word.Document Dim pCurrentParagraph As Paragraph Dim tableauMails As Variant Dim currentMail As Variant Dim rstContacts As DAO.Recordset Dim db As DAO.Database 'Base de données sur laquelle se connecter Dim nomBD As String 'Nom de la Base de Données Dim cheminBDduCdR As String Dim sSQL As String 'Requête de sélection '****************************************************' '***************** Initialisations ******************' '****************************************************' 'Pointer sur le document courant Set WordDoc = ThisDocument nomBD = "nobacontakt.mdb" 'Chemin de la BD (dans le même répertoire) cheminBDduCdR = ThisDocument.Path & "\" & nomBD 'Connexion à la BD Set db = DAO.OpenDatabase(cheminBDduCdR) '****************************************************' '*************** Ajout des contacts *****************' '****************************************************' For Each pCurrentParagraph In WordDoc.Paragraphs pCurrentParagraph.Range.Select tableauMails = Split(pCurrentParagraph.Range.Text, ";") For Each currentMail In tableauMails currentMail = CStr(Trim(currentMail)) 'Debug.Print currentMail If Len(currentMail) > 5 Then If IsMail(Trim(currentMail)) = True Then DoEvents 'Rechercher dans la BD le mail courant sSQL = "SELECT Adressedemessagerie FROM Contacts Where Adressedemessagerie=" & """ & Trim(currentMail) & """ DoEvents Set rstContacts = db.OpenRecordset(sSQL) DoEvents Debug.Print rstContacts("Adressedemessagerie") With rstContacts .AddNew !Adressedemessagerie = Trim(currentMail) .Update .Bookmark = .LastModified End With 'Si l'adresse mail n'est pas déjà présente dans la Base de Contacts If (rstContacts.RecordCount = 0) = True Then 'db.Execute "INSERT INTO Contacts (Adressedemessagerie) VALUES ('" & Trim(currentMail) & "')" DoEvents Debug.Print "Started" 'Pour chaque mail Do Until rstContacts.EOF Debug.Print "Ajoutéééé" With rstContacts .AddNew !Adressedemessagerie = Trim(currentMail) .Update .Bookmark = .LastModified End With 'Réinitialiser la valeur du mail currentMail = "" rstContacts.MoveNext Loop End If Else 'Debug.Print "Pas mail" End If Else End If 'Réinitialiser la valeur du mail currentMail = "" DoEvents Next currentMail Next pCurrentParagraph 'Effacer le contenu du document For Each pCurrentParagraph In WordDoc.Paragraphs pCurrentParagraph.Range.Select pCurrentParagraph.Range.Delete Next pCurrentParagraph End Sub
Partager