Organisation de données sur excel pour conversion en xml
b.desmarets
Messages postés
22
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Petite question liée à mon boulot. Je suis dans une une petite boîte de construction bois et viens de faire l'acquisition d'une nouvelle machine, une tronçonneuse numérique. Une fois un projet de charpente terminé, j'exporte la liste des pièces de bois par section (hauteur x épaisseur) et longueur et la rentre dans la machine. Elle s'occupe d'optimiser la découpe pour une même section, depuis des longueurs standards, afin de limiter les chutes.
Seul problème, la machine ne lit pas les fichiers excel mais xml. J'ai donc réussi à décortiquer l'architecture d'un fichier type et il me faudrait maintenant développer un petit outil qui me ferait la conversion automatique de xls à xml en respectant toutes les balises and co.
Concrètement, je souhaiterais passer d'un tableau à 5 cinq colonnes:
- n° pièces
- hauteur
- épaisseur
- longueur
- quantité
à un classement des pièces par section (hauteur ET épaisseur identiques), avec la liste des longueur et pour chacune d'elle, la quantité demandée.
Voici ci-dessous le tableau excel et la version que le format trié que je souhaiterais obtenir avec une macro/formule.

A partir du second tableau j'arriverai ensuite à extraire les données sous forme de boucles pour renseigner en en-tête la section puis chaque attachées et ainsi de suite.
D'avance merci pour votre aide, bien à vous.
Baptiste.
Petite question liée à mon boulot. Je suis dans une une petite boîte de construction bois et viens de faire l'acquisition d'une nouvelle machine, une tronçonneuse numérique. Une fois un projet de charpente terminé, j'exporte la liste des pièces de bois par section (hauteur x épaisseur) et longueur et la rentre dans la machine. Elle s'occupe d'optimiser la découpe pour une même section, depuis des longueurs standards, afin de limiter les chutes.
Seul problème, la machine ne lit pas les fichiers excel mais xml. J'ai donc réussi à décortiquer l'architecture d'un fichier type et il me faudrait maintenant développer un petit outil qui me ferait la conversion automatique de xls à xml en respectant toutes les balises and co.
Concrètement, je souhaiterais passer d'un tableau à 5 cinq colonnes:
- n° pièces
- hauteur
- épaisseur
- longueur
- quantité
à un classement des pièces par section (hauteur ET épaisseur identiques), avec la liste des longueur et pour chacune d'elle, la quantité demandée.
Voici ci-dessous le tableau excel et la version que le format trié que je souhaiterais obtenir avec une macro/formule.
A partir du second tableau j'arriverai ensuite à extraire les données sous forme de boucles pour renseigner en en-tête la section puis chaque attachées et ainsi de suite.
D'avance merci pour votre aide, bien à vous.
Baptiste.
A voir également:
- Organisation de données sur excel pour conversion en xml
- Liste déroulante excel - Guide
- Trier des données excel - Guide
- Xml download - Télécharger - Édition & Programmation
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
3 réponses
Bonjour,
dans un forum photoshop les jpg c'est bien, dans un forum excel les xls c'est mieux.
cjoint.com et coller le lien fournit ici.
eric
dans un forum photoshop les jpg c'est bien, dans un forum excel les xls c'est mieux.
cjoint.com et coller le lien fournit ici.
eric
Bonjour,
Merci pour votre réactivité.
J'ai donc copié/collé le doc excel avec les deux tableaux: https://www.cjoint.com/c/HAgibRTJ7VZ
Aussi ci dessous, le code lu par la machine. Les pièces sont donc regroupées par section (hauteur x épaisseur), avec en en-tête, les balises SecSectionID, SecHeight (hauteur) et SecWidth (largeur, ou épaisseur). A chaque groupe de section correspondent une ou plusieurs pièces, de longueur, quantité etc. différentes. On ouvre donc la balise PrgPieces au sein de laquelle se trouvent ces données (PcID, PcLength etc)
L'idée serait donc de partir d'un tableau brut, de classer ensuite les pièces de bois par section stricte (hauteur ET épaisseur identiques) et convertir pour chaque section, l'en-tête correspondant et le code caractérisant chaque pièce. Cela vous semble-t-il pertinent ?
D'avance merci pour votre aide, bien à vous.
Baptiste.
Merci pour votre réactivité.
J'ai donc copié/collé le doc excel avec les deux tableaux: https://www.cjoint.com/c/HAgibRTJ7VZ
Aussi ci dessous, le code lu par la machine. Les pièces sont donc regroupées par section (hauteur x épaisseur), avec en en-tête, les balises SecSectionID, SecHeight (hauteur) et SecWidth (largeur, ou épaisseur). A chaque groupe de section correspondent une ou plusieurs pièces, de longueur, quantité etc. différentes. On ouvre donc la balise PrgPieces au sein de laquelle se trouvent ces données (PcID, PcLength etc)
<?xml version="1.0"?> <Programs fileversion="version 1.0"> <PrgProgram>02012018_Test_Stromab</PrgProgram> <PrgHeadTrimmingLength>0</PrgHeadTrimmingLength> <PrgTailTrimmingLength>0</PrgTailTrimmingLength> <PrgPrinterField1></PrgPrinterField1> <PrgPrinterField2></PrgPrinterField2> <PrgPrinterField3></PrgPrinterField3> <PrgPreOptimized>0</PrgPreOptimized> <PrgProgrammedBarLength>0</PrgProgrammedBarLength> <PrgSections> <SecSectionID>1</SecSectionID> <SecHeight>30</SecHeight> <SecMinWidth/> <SecMaxWidth/> <SecWidth>65</SecWidth> <PreOpt/> <PrgPieces> <PcPage/> <PcQuality>1</PcQuality> <PcPieceID>1</PcPieceID> <PcLength>830</PcLength> <PcNumberOfPieces>1</PcNumberOfPieces> <PcPriority>0</PcPriority> <PcUnloader1>2</PcUnloader1> <PcUnloader2>0</PcUnloader2> <PcPrinterCode></PcPrinterCode> <PcPrinterId></PcPrinterId> <PcPrinterField1></PcPrinterField1> <PcPrinterField2>2572</PcPrinterField2> <PcPrinterField3>MD101</PcPrinterField3> <PcPrinterField4></PcPrinterField4> <PcPrinterField5></PcPrinterField5> <PcPrinterField6></PcPrinterField6> <PcPrinterField7></PcPrinterField7> <PcPrinterField8></PcPrinterField8> <PcPrinterField9></PcPrinterField9> <PcPrinterField10></PcPrinterField10> <PcNumberOfDonePieces>0</PcNumberOfDonePieces> <PcSelected>1</PcSelected> </PrgPieces> <PrgPieces> <PcPage/> <PcQuality>1</PcQuality> <PcPieceID>2</PcPieceID> <PcLength>3980</PcLength> <PcNumberOfPieces>1</PcNumberOfPieces> <PcPriority>0</PcPriority> <PcUnloader1>1</PcUnloader1> <PcUnloader2>3</PcUnloader2> <PcPrinterCode></PcPrinterCode> <PcPrinterId></PcPrinterId> <PcPrinterField1></PcPrinterField1> <PcPrinterField2>2562</PcPrinterField2> <PcPrinterField3>MD101</PcPrinterField3> <PcPrinterField4></PcPrinterField4> <PcPrinterField5></PcPrinterField5> <PcPrinterField6></PcPrinterField6> <PcPrinterField7></PcPrinterField7> <PcPrinterField8></PcPrinterField8> <PcPrinterField9></PcPrinterField9> <PcPrinterField10></PcPrinterField10> <PcNumberOfDonePieces>0</PcNumberOfDonePieces> <PcSelected>1</PcSelected> </PrgPieces> <SecSectionID>2</SecSectionID> <SecHeight>45</SecHeight> <SecMinWidth/> <SecMaxWidth/> <SecWidth>240</SecWidth> <PreOpt/> <PrgPieces> <PcPage/> <PcQuality>1</PcQuality> <PcPieceID>3</PcPieceID> <PcLength>413</PcLength> <PcNumberOfPieces>1</PcNumberOfPieces> <PcPriority>0</PcPriority> <PcUnloader1>2</PcUnloader1> <PcUnloader2>0</PcUnloader2> <PcPrinterCode></PcPrinterCode> <PcPrinterId></PcPrinterId> <PcPrinterField1></PcPrinterField1> <PcPrinterField2>2546</PcPrinterField2> <PcPrinterField3>MD101</PcPrinterField3> <PcPrinterField4></PcPrinterField4> <PcPrinterField5></PcPrinterField5> <PcPrinterField6></PcPrinterField6> <PcPrinterField7></PcPrinterField7> <PcPrinterField8></PcPrinterField8> <PcPrinterField9></PcPrinterField9> <PcPrinterField10></PcPrinterField10> <PcNumberOfDonePieces>0</PcNumberOfDonePieces> <PcSelected>1</PcSelected> </PrgPieces> </PrgSections> </Programs>
L'idée serait donc de partir d'un tableau brut, de classer ensuite les pièces de bois par section stricte (hauteur ET épaisseur identiques) et convertir pour chaque section, l'en-tête correspondant et le code caractérisant chaque pièce. Cela vous semble-t-il pertinent ?
D'avance merci pour votre aide, bien à vous.
Baptiste.
Bonjour,
Préparation avec un TCD et récup données dans une variable tableau.
https://www.cjoint.com/c/HAglsTgzbq4
Apparemment tu as des outils pour créer ton xml : https://docs.microsoft.com/fr-fr/previous-versions/office/gg469857(v=office.14)?redirectedfrom=MSDN
Je n'ai pas approfondi la lecture...
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Préparation avec un TCD et récup données dans une variable tableau.
https://www.cjoint.com/c/HAglsTgzbq4
Apparemment tu as des outils pour créer ton xml : https://docs.microsoft.com/fr-fr/previous-versions/office/gg469857(v=office.14)?redirectedfrom=MSDN
Je n'ai pas approfondi la lecture...
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Bonsoir Eric,
Merci beaucoup pour votre réponse, je vais creuser tout ça. Pensez-vous néanmoins qu'il soit possible d'afficher l'épaisseur même si elle est similaire à la précédente, dès lors qu'on se trouve sur une autre section du tableau ? Pour récupérer hauteur et épaisseur dans le xml, cela me semble indispensable.
D'avance merci, bien à vous.
Baptiste.
Merci beaucoup pour votre réponse, je vais creuser tout ça. Pensez-vous néanmoins qu'il soit possible d'afficher l'épaisseur même si elle est similaire à la précédente, dès lors qu'on se trouve sur une autre section du tableau ? Pour récupérer hauteur et épaisseur dans le xml, cela me semble indispensable.
D'avance merci, bien à vous.
Baptiste.
Bonjour Eric,
Je suis de retour après quelques jours avec la crève !
Merci pour votre réponse. Sans vous contredire, vous n'avez pas fait exactement comme demandé.
Les sections 45x85 et 30x60 n'apparaissent pas en tant que tel; la ligne épaisseur manque, cette dernière étant la même que la section précédente du tableau.
Néanmoins, il ne faudrait pas que la section apparaisse sur chaque section. C'est là qu'est toute la subtilité de ma requête.
Merci pour votre aide précieuse, bien à vous.
Baptiste.
Je suis de retour après quelques jours avec la crève !
Merci pour votre réponse. Sans vous contredire, vous n'avez pas fait exactement comme demandé.
Les sections 45x85 et 30x60 n'apparaissent pas en tant que tel; la ligne épaisseur manque, cette dernière étant la même que la section précédente du tableau.
Néanmoins, il ne faudrait pas que la section apparaisse sur chaque section. C'est là qu'est toute la subtilité de ma requête.
Merci pour votre aide précieuse, bien à vous.
Baptiste.
Bonjour,
A partir du second tableau j'arriverai ensuite à extraire les données sous forme de boucles pour renseigner en en-tête la section puis chaque attachées et ainsi de suite
Oui, c'est la présentation normale d'un TCD.
Quand tu boucles si l'épaisseur figure tu la mémorises et sur une ligne où tu en as besoin (si hauteur change) tu l'utilises.
Ca te pose quelles difficultés ?
eric
A partir du second tableau j'arriverai ensuite à extraire les données sous forme de boucles pour renseigner en en-tête la section puis chaque attachées et ainsi de suite
Oui, c'est la présentation normale d'un TCD.
Quand tu boucles si l'épaisseur figure tu la mémorises et sur une ligne où tu en as besoin (si hauteur change) tu l'utilises.
Ca te pose quelles difficultés ?
eric
Désolé pour mon manque de discernement, mais je ne maîtrise qu'à peine Excel, je suis charpentier de formation. P-e la tâche est un peu loin de mes aptitudes, néanmoins le but n'est absolument pas de te demander le boulot prémâché (bien que ça soit déjà le cas je suppose...), je vais donc regarder des cours sur internet à propos des tableaux croisés dynamiques et des boucles.
Merci encore pour ton aide, bien à toi.
Baptiste.
Merci encore pour ton aide, bien à toi.
Baptiste.