Bonjour,
Dans une table de ma base de données, je récupère les "métadonnées" (informations sur les fichiers) des fichiers enregistrés dans certains répertoires.
Pour cela j'utilise le code recopié ci-dessous (piqué je ne sais plus où, car je suis une piètre bidouilleuse sans formation initiale en programmation) : la première sub étant appelée depuis un bouton de mon formulaire qui opère au préalable une série de vérifications... Ceci fonctionne parfaitement, mais je voudrais maintenant - compléter ce code de façon à ce que ne soient importées que les données des fichiers qui ne sont pas déjà présentes dans ma table. Autrement dit que le système compare - pour un chemin donné - les enregistrements existants dans ma table (le chemin étant enregistré dans le champ "CheminFich") avec l'ensemble des fichiers effectivement présents dans le répertoire ad-hoc.
Je ne sais comment m'y prendre... Pouvez-vous m'aider ?
Merci d'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
Sub CompleteMetadon()
 
 Dim ChemRepObjet As String
ChemRepObjet = "I:\" & Me![Abreviation] & "\" & Me![Refobjet]
Dim chemRepPhase As String
chemRepPhase = ChemRepObjet & "\" & "Phase-0" & "\"
Dim NomRepDossier As String
NomRepDossier = EnleverAccents(Me![NumFonds]) & "-10000"
Dim chemRepDossier As String
chemRepDossier = chemRepPhase & "\" & NomRepDossier & "\"
 
  Set oFSO = CreateObject("Scripting.FileSystemObject")
   sChemin = chemRepDossier
  sTmp = ""
   ComparToutesMeta sChemin, 0
 
    Set oFSO = Nothing
 End Sub
 
 
Sub ComparToutesMeta(spath As String, Niv As Long)
 
Dim oDc As Object
Dim oD As Object
Dim oF As Object
Dim copRepName As String
Dim copRepDateCopie As String 'DateCopie => DateCreated
Dim copRepDateModif As String 'DateDernModif => DateLastModified
Dim copRepChemin As String 'CheminFich => Path
Dim copFichName As String
Dim copFichDateCopie As String 'DateCopie => DateCreated
Dim copFichDateModif As String 'DateDernModif => DateLastModified
Dim copFichChemin As String 'CheminFich => Path
Dim copFichTaille As String 'TailleFich => Size
Dim copFichtype As String 'FormatFich => type
 
If oFSO.FolderExists(spath) Then
    Set oDc = oFSO.GetFolder(spath)
 
    Dim MaBD As Database, MaTable As Recordset
 
    If spath <> sChemin Then
        copRepName = oDc.name
        copRepDateCopie = oDc.DateCreated
        copRepDateModif = oDc.DateLastModified
        copRepChemin = oDc.Path
        Set MaBD = DBEngine.Workspaces(0).Databases(0)
        Set MaTable = MaBD.OpenRecordset("MetadonDescFichiers")
        MaTable.AddNew      ' Crée un nouvel enregistrement directement dans la table
        MaTable("IdFichier") = copRepName
        MaTable("DateCopie") = copRepDateCopie
        MaTable("DateDernModif") = copRepDateModif
        MaTable("CheminFich") = copRepChemin
        MaTable("RefObjLie") = Forms![FmrInvObjMetadon]![RefObjetNum]
        MaTable("RefDosLie") = Forms![FmrInvObjMetadon]![RefDossCopie]
 
        MaTable.Update
        MaTable.Close
    End If
 
    If oDc.files.count > 0 Then
        For Each oF In oDc.files
          copFichName = oF.name
          copFichDateCopie = oF.DateCreated
          copFichDateModif = oF.DateLastModified
          copFichChemin = oF.Path
          copFichTaille = oF.Size
          copFichtype = oF.Type
 
        Set MaBD = DBEngine.Workspaces(0).Databases(0)
        Set MaTable = MaBD.OpenRecordset("MetadonDescFichiers")
        MaTable.AddNew      ' Crée un nouvel enregistrement directement dans la table
        MaTable("IdFichier") = copFichName
        MaTable("DateCopie") = copFichDateCopie
        MaTable("DateDernModif") = copFichDateModif
        MaTable("CheminFich") = copFichChemin
        MaTable("TailleFich") = copFichTaille
        MaTable("FormatFich") = copFichtype
       MaTable("RefObjLie") = Forms![FmrInvObjMetadon]![RefObjetNum]
        MaTable("RefDosLie") = Forms![FmrInvObjMetadon]![RefDossCopie]
        MaTable.Update
        MaTable.Close
        Next
        Set oF = Nothing
    End If
 
    For Each oD In oDc.SubFolders
    ComparToutesMeta spath & "\" & oD.name, Niv + 1
    Next
End If
Set oDc = Nothing
Set oD = Nothing
Forms![FmrInvObjMetadon]![FmrInvObjMetadonSF].Form.Requery
End Sub