Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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 10/03/2006, 11h53   #1
Invité régulier
 
Inscription : octobre 2003
Messages : 25
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 25
Points : 8
Points : 8
Envoyer un message via AIM à FLCEOAP Envoyer un message via MSN à FLCEOAP
Par défaut [VBA-W] Arranger un code HTML

Bonjour à tous !

Je ne sais pas si je suis au bon endroit pour poser ma question. Cependant, je ne vois pas d'autre endroit où je pourrais la poser...

Voilà, je dois réaliser une macro sous Visual Basic Application pour Word qui a pour but de me permettre de réaliser le parsage d'un fichier HTML en un fichier XML à l'aide d'un fichier XSL.

Actuellement, j'ai un tableau dans un fichier "*.doc". A l'aide d'OpenOffice.org, j'arrive à convertir ce tableau en HTML et le résultat est bien plus propre et mieux construit que le code récupéré à l'aide de Microsoft Word... Cependant, il reste des attributs dont la valeur n'est pas entre guillement. Or ceci rend impossible d'utiliser un processeur XSL pour réaliser le parsage dont j'ai besoin.

Pour illustrer mon propos :
J'ai
Code :
1
2
3
4
5
6
 
<BALISE1 attr1="a" attr2=xyz attr3=plop>
   ...
</BALISE1>
 
<BALISE2 attr4=ijk attr5="123"/>
Et je voudrais avoir :
Code :
1
2
3
4
5
6
 
<BALISE1>
   ...
</BALISE1>
 
<BALISE2/>
Ou :
Code :
1
2
3
4
5
6
 
<BALISE1 attr1="a" attr2="xyz" attr3="plop">
   ...
</BALISE1>
 
<BALISE2 attr4="ijk" attr5="123"/>
Il existerait donc deux solutions :
1. supprimer tous les attributs (seul le nom des balises m'intéressent)
2. rajouter les guillemets nécessaires

Je ne connais pas trop le VBA pour Word et j'ai donc de nombreux soucis...

L'algorithme que j'avais envisagé pour la 1. est :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
- Effacer tous les guillemets déjà installés 
- TANT QUE nous n'arrivons pas à la fin du texte
   - SI je trouve "<" ALORS
       - SI je trouve ">" ALORS
             * (entre les deux éléments trouvés)
             - SI je trouve "=" ALORS remplacer par " =" "
             - SI je trouve " " ALORS 
                   - SI je trouve "/>" ALORS remplacer par ""/>"
                   - SI je trouve ">" ALORS remplacer par "">"
             - FIN SI
       - FIN SI
   - FIN SI
- FIN TANT QUE
L'algorithme pour la 2. est :
Code :
1
2
3
4
5
6
7
8
 
- TANT QUE nous n'arrivons pas à la fin du texte
   - SI je trouve "<" ALORS
       - SI je trouve ">" ALORS
           - SI je trouve " " ALORS supprimer jusqu'à "/" OU jusqu'à ">"
       - FIN SI
   - FIN SI
- FIN TANT QUE
Est-ce que vous pourriez me donner des conseils ? Quelle méthode vous parait la plus propre ? La plus simple à mettre en oeuvre ? Ou bien... si vous avez une autre suggestion...

J'espère que vous avez compris mon problème et que vous pourrez m'aider !


P.S. : La question est posée de la même manière pour effectuer le même traitement sous OpenOffice.org...
FLCEOAP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2006, 13h17   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 805
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 805
Points : 3 003
Points : 3 003
Bonjour,

- La fonction InStr(Chaine, sous-cchaine) renvoie la position d'une sous-chaine dans une chaine
- La fonction Left(n) renvoie les n caractères de gauche d'une chaine
- La fonction Right(n) renvoie les n caractères de Droite d'une chaine
- La fonction Mid(Chaine, n1, n2) renvoie les caractères se situant à partir de n1 sur une longueur de n2 caractères

Avec ça tu devrais t'en sortir.
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h41.


 
 
 
 
Partenaires

Hébergement Web