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

VBA Word Discussion :

Remplir plusieurs tableaux à partir d'un fichier XML


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 25
    Points : 17
    Points
    17
    Par défaut Remplir plusieurs tableaux à partir d'un fichier XML
    Bonjour à tous,

    Voilà je rencontre une difficulté pour remplir plusieurs tableaux d'un document Word. cet à dire que sur les deux tableaux un seul se remplit convenablement

    voilà mon code VB

    Code xml : 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
    'Spécification : charger les données dans le modèle
    'Début
     
     
    Private Sub cmdLoadData_Click()
     
        oWord.Selection.MoveDown wdLine, 0
        oWord.Selection.EndKey wdLine
        oWord.Selection.MoveRight wdCharacter
        oWord.Selection.TypeText parser.selectSingleNode("//COD").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//LONFIX").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//LONATT").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//NBRMNT").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//TAI").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//TYP").Text
     
     
        'Tableaux numéro 2
     
        oWord.Selection.MoveDown wdLine, 6
        oWord.Selection.EndKey wdLine
        oWord.Selection.MoveRight wdCharacter
        oWord.Selection.TypeText parser.selectSingleNode("//CO").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//LON").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//LONA").Text
     
        oWord.Selection.MoveDown wdLine
        oWord.Selection.TypeText parser.selectSingleNode("//NBR").Text
        End Sub
    'Fin

    Voilà le fichier XML
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" ?>
    <EMAIL>
    	<COD>essai</COD>
    	<LONFIX>test</LONFIX>
    	<LONATT>arbre</LONATT>
    	<NBRMNT>film</NBRMNT>
    	<TAI>essai</TAI>
    	<TYP>essais</TYP>
    	<CO>Ess</CO>
    	<LON>Tes</LON>
    	<LONA>Arbr</LONA>
    	<NBR>Fil</NBR>
    </EMAIL>

    A savoir que les informations contenu dans COD, LONFIX, LONATT, NBRMNT, TAI, TYP doivent se trouver dans un 1er tableau et COD, LON, LONA, NBR dans un second tableau.

    Le principe :

    Le programme charge le fichier XML, ouvre word, ouvre un fichier .dot avec les tableaux et insère les données dans ces mêmes tableaux. De plus il faudrait qu'un client éventuel puisse choisir le modèle à remplir ainsi que les données qu'il veut afficher dans ce modèle. Encore une chose les données doivent être mises à jour automatiquement dans les différents modèles.


    Merci d'avance beaucoup pour vos réponses.

    Christophe

    EDIT : Veuillez m'escusez j'ai posté dans la mauvaise section

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pourquoi ouvrir et remplir un tableau avec du XML ?

    Si tu fais un XSL, tu n'as pas besoin de te creuser plus.

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <xsl:template match="/">
    <html>
    	<head>
    		<title></title>
    	</head>
    	<body>
    <table border="1" cellspacing="0" cellpadding="3">
    	<tbody>
    		<tr bgcolor="#FFFF00">
    			<td>Marque</td>
    			<td>Modele</td>
    			<td>Serie</td>
    		</tr>
    		<xsl:for-each select="Voiture">
    		<tr>
    			<td><xsl:value-of select="marque"/></td>
    			<td><xsl:value-of select="modele"/></td>
    			<td><xsl:value-of select="serie"/></td>
    		</tr>
    		</xsl:for-each>
    	</tbody>
    </table>	
    	</body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

    C'est un exemple de ce que peut faire du XSL,

    Voilà le XML qui correspond

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?xml-stylesheet type="text/xsl" href="voiture.xsl"?>
     
    <Voiture xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\LOCALD~1\Forum\voiture.xsd">
    	<marque>Renault</marque>
    	<modele>Scenic</modele>
    	<serie>Mer du Nord</serie>
    	<cyl>1500</cyl>
    	<carburant>Diesel</carburant>
    	<km>30000</km>
    	<datemiseencirculation>2006-02-14</datemiseencirculation>
    </Voiture>

    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- edited with XMLSpy v2007 rel. 3 (http://www.altova.com) by Olivier Lebeau (Heureux-oli sur DVP) -->
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    	<xs:element name="Voiture">
    		<xs:annotation>
    			<xs:documentation>Comment describing your root element</xs:documentation>
    		</xs:annotation>
    		<xs:complexType>
    			<xs:sequence>
    				<xs:element name="marque" type="xs:string"/>
    				<xs:element name="modele" type="xs:string"/>
    				<xs:element name="serie" type="xs:string"/>
    				<xs:element name="cyl">
    					<xs:simpleType>
    						<xs:restriction base="xs:string">
    							<xs:maxLength value="4"/>
    						</xs:restriction>
    					</xs:simpleType>
    				</xs:element>
    				<xs:element name="carburant">
    					<xs:simpleType>
    						<xs:restriction base="xs:string"/>
    					</xs:simpleType>
    				</xs:element>
    				<xs:element name="km" type="xs:int"/>
    				<xs:element name="datemiseencirculation" type="xs:date"/>
    			</xs:sequence>
    		</xs:complexType>
    	</xs:element>
    </xs:schema>
    Et le XSD
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2010
    Messages
    571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 571
    Points : 97
    Points
    97
    Par défaut
    Bonjour Olivier,

    Je deterre ce très vieux post ....
    En fait je cherche a créer un fichier .docx à partir d'un fichier de base XML
    Le principe marche nickel pour Html (XML + XSL +CSS -> on ouvre le fichier XML dans firefox et impec)

    Par contre, avec ton exemple, j'ai créer les fichiers (voiture.xml, voiture.xsl et voiture.xsd) en y copiant le code que tu indiques et en vérifiant les bons liens entre les fichiers (tous dans le même repertoire )

    Mais comment peut on ouvrir le fichier XML dans Word ???
    Word ne detecte que les fichiers XML ayant une structure bien définie .... et donc ca ne m'ouvre rien quand je fais dans word "fichier/ouvrir/voiture.xml"

    Une idée ?

    Merci d'avance

    Thais

Discussions similaires

  1. remplir ma checkedlistbox à partir d'un fichier XML
    Par sinaps1618 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 23/10/2009, 06h33
  2. remplir un select en javascript a partir d'un fichier xml
    Par Bernard7308 dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 17/11/2008, 19h31
  3. Réponses: 9
    Dernier message: 29/05/2008, 13h33
  4. Réponses: 2
    Dernier message: 03/05/2008, 13h34
  5. Comment remplir un bean a partir d'un fichier xml
    Par NewSer dans le forum Persistance des données
    Réponses: 2
    Dernier message: 02/02/2007, 13h19

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