Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2011, 12h02   #1
Membre à l'essai
 
Homme Fred Laplace
Responsable de service informatique
Inscription : décembre 2008
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Fred Laplace
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2008
Messages : 18
Points : 23
Points : 23
Par défaut Impossible de charger un fichier XML.

Bonjour tout le monde, je m'en vais vous exposer mon incompréhension :

J'ai un fichier Excel contenant des rapports d'intervention, d'une taille minimum de de 1,5Mo à vide. Afin d'accélérer les transferts, j'ai donc opté pour des fichiers d'échanges XML.

J'ai donc créé pour ce faire ma DTD et les scripts permettant d'exporter le fichier xml (en fait je créé un fichier texte en extension .XML, et j'écris mes lignes bien formatées).Le parser XML Tools de Notepad++ valide les fichiers créés face à la DTD. Jusque là, tout va bien.

Je veux donc créer la fonction inverse, d'import, qui me permettra de reconstruire mes rapports à partir de mon fichier XML. Et là je bute au chargement. J'ai essayé avec un autre fichier XML, et là ça marche...

La différence c'est que le fichier du tuto que j'ai testé est un fichier "bien formé", là ou le mien est lié à une DTD externe. Et effectivement, quand je supprime l'appel à la DTD suivant (pour l'instant celle-ci est dans le même dossier mais elle sera hébergé sur site plus tard) :

Code :
<!DOCTYPE Transfert SYSTEM "Transfert.dtd">
Et beh ça marche...
La question à 20 000 Francs est donc : Est-il possible de charger un fichier lié à une DTD externe ? Si oui comment ?

Et pour éviter les réponses trop simples : Oui j'ai besoin de cette DTD car ces fichiers de transfert serviront aussi à un traitement XSLT pour affichage sur site, et que j'aimerai bien tout de même pouvoir valider mon format autrement qu'en dur. ^^

voilà, Merci de vos réflexions et encore plus merci si vous connaissez une solution !

Addendum : Le code utilisé pour le chargement si besoin :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub XML_Import()
Dim fxml As MSXML2.DOMDocument30
 
Set fxml = New MSXML2.DOMDocument30
fxml.async = False
fichier = Application.GetOpenFilename("Fichiers XML, *.xml")
fxml.async = False
If fxml.Load(fichier) Then
rep = MsgBox("XML Chargé, Ok pour continuer", vbOKCancel)
If rep <> vbOK Then
    Exit Sub
End If
Else
MsgBox Prompt:="Erreur lors du chargement"
Exit Sub
End If
 
End sub
FcL.Laplace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2011, 14h21   #2
Membre à l'essai
 
Homme Fred Laplace
Responsable de service informatique
Inscription : décembre 2008
Messages : 18
Détails du profil
Informations personnelles :
Nom : Homme Fred Laplace
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : décembre 2008
Messages : 18
Points : 23
Points : 23
Par défaut Et beh c'est MSDN qui m'a répondu

Bon après une recherche dans MSDN,

J'ai pu voir que le ligne :
Code :
fxml.validateOnParse = False
me débloquait.

J'ai donc déduit qu'il s'agissait d'une erreur de parse dans mon fichier (incompréhension car les parsers externes valident mon document) et j'ai donc utilisé les lignes suivantes pour découvrir l'erreur provoquée :

Code :
1
2
3
Dim xPE As MSXML2.IXMLDOMParseError
    ' Obtient l'objet ParseError
    Set xPE = fxml.parseError
J'ai regardé ce qui n'allait pas (dans les var locales), on m'a répondu que le nœud de premier niveau devait être le même que la DTD déclarée

Quid ? Qué ? Quoi ?
Et là surprise, et information qui m'a débloqué et qui pourra vous aider si vous êtes tombé sur cette discussion en cherchant le même problème :

MSXML est Case Sensitive !!!!!

Mon DTD Transfert ne concordait donc pas avec mon nœud TRANSFERT...
Problème résolu, et j'espère que ça pourra vous aider par l'avenir si vous attaquez les mêmes pans épineux d'Excel.
FcL.Laplace est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h03.


 
 
 
 
Partenaires

Hébergement Web