Bonjour à tous.
J'utilise, pour vérifier la validité de fichiers xml qui doivent respecter une structure définie par un schéma xsd, la fonction suivante :
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
Function Valid()
On Error GoTo Line1

Dim NomRepertBD                 'Le nom du répertoire où se trouve la base de données
Dim xmlDoc As New MSXML2.DOMDocument40
Dim xsdCache As New MSXML2.XMLSchemaCache40
Dim myErr
Dim NomFichierXML
Dim Lib As String
Lib = Me.Classe1 & "_" & Me.AnSc & "_" & Me.DateFichier & "_" & Me.Code_centre & Me.Code_antenne
NomRepertBD = ParentDir(Application.CurrentDb.Name)
NomFichierXML = NomRepertBD + "Etnic\STAT" & Lib & ".xml"

xsdCache.Add "", NomRepertBD + "IRIS_14.xsd"
Set xmlDoc.schemas = xsdCache
xmlDoc.validateOnParse = True
xmlDoc.async = False
xmlDoc.Load NomFichierXML

Dim db As DAO.Database
Set db = CurrentDb()
Set myErr = xmlDoc.parseError
If (myErr <> 0) Then
    MsgBox ("Le fichier xml comporte au moins une erreur et ne peut être envoyé : " _
    & myErr.reason & "Si vous n'arrivez pas à corriger l'erreur, contactez l'informaticien de l'AFAPMS.")
        DoCmd.SetWarnings False
        db.Execute "DELETE Transmission.* FROM Transmission"
        DoCmd.SetWarnings True
        db.Close
        Exit Function
Else
    MsgBox ("Le fichier xml enregistré dans le dossier \Etnic sous le nom" & NomFichierXML & " est conforme " _
    & "au schéma défini. Il peut être envoyé.")
        DoCmd.SetWarnings False
        db.Execute "DELETE Transmission.* FROM Transmission"
        DoCmd.SetWarnings True
        db.Close
        Exit Function
End If

Line1:
MsgBox "Votre installation ne permet pas la vérification du fichier xml qui a été créé. ", vbExclamation
Exit Function
End Function
Ce code fonctionne parfaitement dans la plupart des installations. Chez certains utilisateurs, il génère une erreur de compilation "Type défini par l'utilisateur non défini" sur les déclarations faisant référence au document xml et au schéma xsd (lignes 5 et 6). Je soupçonne un problème de référence.
Personnellement, j'utilise Access 2010 et la référence relative à ces déclarations est Microsoft XML, v4.0.
J'ai pu remarquer que l'erreur se produit systématiquement sur les installations Access2016, et assez rarement sur des installations Access2010. Personnellement je ne dispose pas d'Access 2016 et je ne peux donc pas essayer sur cette version de résoudre le problème.
Si quelqu'un a une suggestion, elle sera la bienvenue.

Merci d'avance.

Robert Lincé