XL 2019 Mappage XML non exportable ?

seb01

XLDnaute Nouveau
Bonjour à tous,

Je suis confronté à un problème de mappage xml et lors de l'exportation j'ai un message qui me signale que les mappages xml de ce classeur ne sont pas exportable.

C'est la première fois que je travaille avec du XML dans excel et je ne sais pas si je m'y prend correctement.

Si vous savez m'aider ce serait sympa.

Mon fichier excel contient 3 colonnes et les entêtes de colonnes correspondent à certains éléments du XML. (StartingDate, EndingDate et INSS)

Voici la structure du XML:
XML:
<Dimona xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Dimona_20212.xsd">
<Form>
<Identification>DIMONA</Identification>
<FormCreationDate>2021-05-06</FormCreationDate>
<FormCreationHour>14:35:00.000</FormCreationHour>
<AttestationStatus>0</AttestationStatus>
<TypeForm>SU</TypeForm>
<Reference>
<ReferenceType>1</ReferenceType>
<ReferenceOrigin>1</ReferenceOrigin>
<ReferenceNbr>string</ReferenceNbr>
</Reference>
<DimonaIn>
<StartingDate>2021-11-08</StartingDate>
<EndingDate>2021-11-08</EndingDate>
<EmployerId>
<NOSSRegistrationNbr>175110801</NOSSRegistrationNbr>
</EmployerId>
<NaturalPerson>
<INSS>01410199955</INSS>
</NaturalPerson>
<DimonaFeatures>
<JointCommissionNbr>XXX</JointCommissionNbr>
<WorkerType>TRI</WorkerType>
</DimonaFeatures>
<StudentPlaceOfWork>
<Denomination>Test lieu</Denomination>
<Address>
<Street>Carrefour Lieu</Street>
<HouseNbr>11</HouseNbr>
<PostBox></PostBox>
<ZIPCode>4000</ZIPCode>
<City>LIEGE</City>
<Country>2</Country>
</Address>
</StudentPlaceOfWork>
</DimonaIn>
</Form>
</Dimona>

et fichier XSD
Code:
Dimona 00011 Noss_conversion1 xs:nossRegistrationNbr 00014 CompanyID_conversion1 xs:companyId 00023 00024 Inss_conversion1 xs:inss 00025 00026 00027 00028 Date_conversion2 00029 00030 00031 00032 00033 00034 00035 00041 00046 00053 00109 NossAPL_conversion1 xs:nossLpaRegistrationNbr 00110 00119 00131 CompanyID_conversion1 xs:companyId 00153 00167 00168 00169 00218 Date_conversion1 00221 00222 TicketNumber_conversion1 00296 00297 00298 00299 Time_conversion1 00517 00518 00519 00520 00522 00523 00615 00652 00655 00663 00664 00776 00777 00778 00910 00911 00913 00948 01017 01085 01135 01231 90372 90480 90379 90378 90377 90594 90376 90375 90022 90107 90374 90017 90256 90373 90082 90059
 

Pièces jointes

  • Dimona.xlsx
    11.2 KB · Affichages: 7

Hasco

XLDnaute Barbatruc
Bon,

Il y a quelque chose que moi ou vous ne comprenons pas.


D'après ce que je comprends :

Vous avez un fichier xml dont vous voulez afficher les éléments StartingDate, EndingDate et INSS.
Vous faîtes les modifications de StartingDate et EndingDate et vous enregistrez pour chaque ligne du tableau excel les modifications dans ce même fichier. Non ?

Il n'était pas question de ré-écrire TOUT le fichier dans ce que vous disiez précédemment.

Si oui, c'est ce que font les macros que je vous ai donné, si non il faut me détailler plus précisément ce que vous faîtes car franchement vous ne m'aidez pas beaucoup.

Je vous laisse encore une chance et après j'abandonne.
 

seb01

XLDnaute Nouveau
Reprenons...
L'administration de la sécurité sociale fourni un moyen de déclarer les heures de prestations du personnel en y déposant sur leur plateforme un fichier XML.
Ce fichier doit donc être complété à notre niveau en y respectant sa structure.
Ce n'est donc pas nous qui devons lire le contenu du fichier XML pour l'intégrer dans un tableau Excel mais bien le compléter à partir de notre tableau Excel pour ensuite le déposer sur le serveur de l'administration par un canal sécurisé.

Jusque là j'espère que c'est en principe clair.

Notre tableau va donc comprendre qques lignes
StartingDateEndingDateINSS
2021-09-102021-09-1112345678910
2021-09-112021-09-1212345879879
2021-09-122021-09-1412654567468

Il faudra ensuite écrire dans le fichier XML pour y insérer ces données selon sa structure sachant qu'il est possible de déclarer plusieurs travailleurs en un seul fichier.
Pour pouvoir déclarer plusieurs travailleurs, il faut répéter autant de fois l'élement <DimonaIn>...</DimonaIn>

Ce fichier dans notre cas selon le tableau Excel devra se présenter comme suit:
XML:
<Dimona xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Dimona_20212.xsd">
    <Form>
        <Identification>DIMONA</Identification>
        <FormCreationDate>2021-05-06</FormCreationDate>
        <FormCreationHour>14:35:00.000</FormCreationHour>
        <AttestationStatus>0</AttestationStatus>
        <TypeForm>SU</TypeForm>
        <Reference>
            <ReferenceType>1</ReferenceType>
            <ReferenceOrigin>1</ReferenceOrigin>
            <ReferenceNbr>string</ReferenceNbr>
        </Reference>
        <DimonaIn>
            <StartingDate>2021-09-10</StartingDate>
            <EndingDate>2021-09-11</EndingDate>
            <EmployerId>
                <NOSSRegistrationNbr>175110801</NOSSRegistrationNbr>
            </EmployerId>
            <NaturalPerson>
                <INSS>12345678910</INSS>
            </NaturalPerson>
            <DimonaFeatures>
                <JointCommissionNbr>XXX</JointCommissionNbr>
                <WorkerType>TRI</WorkerType>
            </DimonaFeatures>
            <StudentPlaceOfWork>
                <Denomination>Test lieu</Denomination>
                <Address>
                    <Street>Carrefour Lieu</Street>
                    <HouseNbr>11</HouseNbr>
                    <PostBox></PostBox>
                    <ZIPCode>4000</ZIPCode>
                    <City>LIEGE</City>
                    <Country>2</Country>
                </Address>
            </StudentPlaceOfWork>
        </DimonaIn>
        <DimonaIn>
            <StartingDate>2021-09-11</StartingDate>
            <EndingDate>2021-09-12</EndingDate>
            <EmployerId>
                <NOSSRegistrationNbr>175110801</NOSSRegistrationNbr>
            </EmployerId>
            <NaturalPerson>
                <INSS>12345879879</INSS>
            </NaturalPerson>
            <DimonaFeatures>
                <JointCommissionNbr>XXX</JointCommissionNbr>
                <WorkerType>TRI</WorkerType>
            </DimonaFeatures>
            <StudentPlaceOfWork>
                <Denomination>Test lieu</Denomination>
                <Address>
                    <Street>Carrefour Lieu</Street>
                    <HouseNbr>11</HouseNbr>
                    <PostBox></PostBox>
                    <ZIPCode>4000</ZIPCode>
                    <City>LIEGE</City>
                    <Country>2</Country>
                </Address>
            </StudentPlaceOfWork>
        </DimonaIn>
        <DimonaIn>
            <StartingDate>2021-09-12</StartingDate>
            <EndingDate>2021-09-14</EndingDate>
            <EmployerId>
                <NOSSRegistrationNbr>175110801</NOSSRegistrationNbr>
            </EmployerId>
            <NaturalPerson>
                <INSS>12654567468</INSS>
            </NaturalPerson>
            <DimonaFeatures>
                <JointCommissionNbr>XXX</JointCommissionNbr>
                <WorkerType>TRI</WorkerType>
            </DimonaFeatures>
            <StudentPlaceOfWork>
                <Denomination>Test lieu</Denomination>
                <Address>
                    <Street>Carrefour Lieu</Street>
                    <HouseNbr>11</HouseNbr>
                    <PostBox></PostBox>
                    <ZIPCode>4000</ZIPCode>
                    <City>LIEGE</City>
                    <Country>2</Country>
                </Address>
            </StudentPlaceOfWork>
        </DimonaIn>
    </Form>
</Dimona>


En fonction du nombre de ligne dans le tableau, il faudra insérer dans le XML autant de fois l'élément <DimonaIn>....</DimonaIn> en y faisant correspondre les champs du tableau Excel avec les éléments de l'XML. (en l’occurrence StartingDate, EndingDate, INSS)

Ensuite il n'y a plus d'interaction avec celui-ci puisqu'il sera déposé sur le serveur de l'administration par SFTP.

Dans mon esprit c'est clair mais je ne sais pas si je retransmet bien l'information de manière suffisamment explicite.
 

Hasco

XLDnaute Barbatruc
Re

Testez avec ça, ce sera mieux :

Ce n'est donc pas nous qui devons lire le contenu du fichier XML pour l'intégrer dans un tableau Excel mais bien le compléter à partir de notre tableau Excel pour ensuite le déposer sur le serveur de l'administration par un canal sécurisé.
Et bien voilà, c'est clair.

Mais se pose d'autres questions ?
Les INSS de votre tableau excel existent-ils toujours dans le fichier xml ( qu'on vous donne ?
Si non, faut-il les créer ? Et à partir de quelles données (toutes celles que vous ne traitez pas ici :
EmployerId/NOSSRegistrationNbr, celles de StudentPlaceOfWork ?

La macro d'enregistrement ouvre le fichier dimona-2.xml (modifier l'extension .txt en .xml du fichier joint) pour en créer un nommé dimona-3.xml dans lequel vous trouverez un élément DimonaIn ajouté.

J'ai récupérer une macro d'un ancien projet pour écrire le fichier sur le disque afin qu'il soit indenté car la création d'éléments par la librairie msxml et la méthode .Save de la même librairie n'indente pas les documents.

Les éléments vides apparaissent sous la forme <TagName /> ce qui est strictement conforme à la norme xml. Votre document sera donc valide et bien formé.



Cordialement
 

Pièces jointes

  • dimona-2.txt
    3.3 KB · Affichages: 3
  • Dimona.xlsm
    38.9 KB · Affichages: 2
Dernière édition:

Hasco

XLDnaute Barbatruc
Magnifique. :D
Un grand merci pour le temps consacré à ce problème.
Re,

J'ai repris votre xsd pour tenter de valider le xml produit mais j'obtiens toujours la même erreur de parsing à l'ouverture du xsd :
Non valide au niveau supérieur du document.
D'ailleurs je n'avais auparavant jamais vu ce type de .xsd qui ne décrit même pas ce que doit contenir le fichier mais semble s'occuper de conversion de nombre... Je ne connais pas ce type de xsd.

Cordialement
 

Membres actuellement en ligne

Statistiques des forums

Discussions
290 755
Messages
1 910 209
Membres
176 539
dernier inscrit
altheamain
Haut Bas