IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur sauvegarde fichier XML et caractères spéciaux


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut Erreur sauvegarde fichier XML et caractères spéciaux
    Bonjour à tous,

    Dans le cadre d'un projet je dois manipuler un fichier XML avec VBA.
    Jusqu'à mainteant j'arrive à l'ouvrir, le parcourir et même le mofier. Mais une fois que je veux le sauvegarder j'ai une erreur qui apparait :
    Nom : Erreur VBA.JPG
Affichages : 653
Taille : 28,0 Ko
    le code que j'utilise est assez simple :
    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
    Sub StartEditingXMLFile()
     
        Dim stFichier As String
        Dim xmlDoc As DOMDocument, rootXML As IXMLDOMElement
     
        stFichier = Application.GetOpenFilename
     
        If stFichier = faux Then Exit Sub
     
        Set xmlDoc = New DOMDocument
        xmlDoc.async = False
        xmlDoc.Load stFichier
        Set rootXML = xmlDoc.DocumentElement
     
     
        If Not rootXML Is Nothing Then
            Set wksEd = ThisWorkbook.Worksheets("Editing")
     
            'On va parcourir la feuille complête pour traiter toutes les dépendances
            For Each rngDep In wksEd.Range("A2:A" & wksEd.Range("A65536").End(xlUp).Row)
                'On commence par aller remplacer la valeur de la dépendance
                EditDependency rootXML, rngDep.value, rngDep.Offset(0, 3).value
     
                'DEBUG : stop la boucle for pour tester direct la sauvegarde
                Exit For
            Next rngDep
     
            xmlDoc.Save (Split(stFichier, ".")(0) & "_edited." & Split(stFichier, ".")(1))
        End If
    End Sub
    Une fois cliqué sur OK sur le message d'erreur je peux voir le fivhier créé, il existe bien mais n'est pas complet. Il se termine brusquement au millieu d'une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		<Material Name="N91128101" BaseUnitOfMeasure="EA" Configurable="true" MaterialGroup="MC" IncludedByReference="true">
    			<Properties>
    			<ConfigurationProfiles>
    			<ClassReferences>
    			<LongTexts>
    			<Translations>
    				<Translation LanguageISO="ZH" Text="
    Dans le fichier origninal j'ai le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    		<Material Name="N91128101" BaseUnitOfMeasure="EA" Configurable="true" MaterialGroup="MC" IncludedByReference="true">
    			<Properties>
    			<ConfigurationProfiles>
    			<ClassReferences>
    			<LongTexts>
    			<Translations>
    				<Translation LanguageISO="ZH" Text="红外手操器"/>
    				<Translation LanguageISO="DE" Text="ZUBEHÖR FOR NP1213@"/>
    				<Translation LanguageISO="EN" Text="ACCESSORIES FOR NP1213@"/>
    			</Translations>
    			<BOMs>
    			<CharacteristicDomains>
            </Material>
    J'ai essayer de supprimer ce "Material" et le code a poursuivi pour fianlement planter plus loin à un matérial qui possède le même type de valeur pour son attributs Text à savoir :
    J'ai l'impression que le problème viens du format de la donnée. Vous auriez une idée ?

    Merci d'avance.

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    a tu essayé avec Chr() pour les codes "spéciaux" (&#@"...) ?
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    code ASCII de 0 à 127

    &=38
    #=35
    @=64
    "=34
    pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Text="红外手操器"/>
    Text= Chr(38) & Chr(35) & "32418;" & Chr(38) & Chr(35) & "22806;" & Chr(38) & Chr(35) & "25163;" & Chr(38) & Chr(35) & "25805;" & Chr(38) & Chr(35) & "22120;"/>

    à voir la function Replace(dansLigneTexte,ARemplacer,par)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut
    Bonjour Merci pour votre réponse.

    En continuant à chercher de mon coté je crois que j'ai trouvé d'où vient le problème. A priori ça serait à cause du format d'encodage des données du .xml.

    Mon fichier d'entrée est US-ASCII et j'ai l'impression que ce format n'est pas géré par vba. En fait en regardant de plus pres je m'apperçoit que les données ne peuvent pas ^^etre écrites parce qu'à la base elle ne sont pas lues. Dans VBA j'ai "????" au lieu des codes.

    Ces codes & #32418 sont en fait des codes de caractères chinois.

    Maintenant je ne sais pas comment faire pour ouvrir mon fichier xml avec VBA et que celui-ci accepte le format US-ACSII et donc les codes qui posent problème .

  5. #5
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    Ces codes & #32418 sont en fait des codes de caractères chinois.
    je confirme :
    Text="红外手操器"/>

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 103
    Par défaut
    Je ne veux pas traduire les caractères chinois, je voudrais qu'il soit interprétés correctement par mon VBA pour ensuite les retrouver lors de la sauvegarde...

Discussions similaires

  1. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  2. [FLASH MX2004] petit soucis XML et caractères spéciaux
    Par Isses dans le forum Intégration
    Réponses: 20
    Dernier message: 25/04/2006, 13h24
  3. Réponses: 3
    Dernier message: 01/12/2005, 21h38
  4. [XML] [PHP] Sauvegarde fichier xml
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2005, 16h58
  5. [DOM XML] Sauvegarde fichier xml
    Par ribrok dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/10/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo