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 :

[VBA-W] Recherche "Styles" + balises html devant/derrière


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 15
    Points
    15
    Par défaut [VBA-W] Recherche "Styles" + balises html devant/derrière
    Bonjour,
    Je suis nouveau sur ce forum (Genial par ailleurs) et j'ai besoin d'aide pour mon travail (très important).
    J'ai besoin de convertir des pages Word (nombreuses) en HTML simple (pas le HTML généré par word).

    Je pense donc que le plus simple serait de faire une macro qui rechercherait dans le Word les styles (toujours les mêmes, dans toutes les pages) et de mettre une balise HTML devant et derrière correspondant aux differents styles :

    exemple : <bold>mon texte</bold> (pour le style "Gras")

    Est-ce que quelqu'un pourrait m'aider pour faire cela ?

    J'aimerais par ailleurs mettre une entête HTML en debut de page automatiquement.

    J'ai trouvé ca sur le net : http://cid-cedille.ens-lsh.fr/articl...?id_article=48 en fait c'est exactement ce que je recherche mais c'est trop compliqué pour moi (pour ajouter des "styles" et les convertir)...Mais le principe est la.
    ou encore ca : (en moins aboutit) mais la c pour du code SPIP : http://www.spip-contrib.net/Macro-word

    Merci de votre aide

    LuXmen

  2. #2
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    passer des balises html est asser facile. je crois même que tu en trouve des listes sur internet. le gros du travail est de faire une liste d'identification entre les balises html et le code word.

    là dessus, bonne chance. à la limite, c'est peut-être plus facile de faire une conversion à partir du html de word au html normal plutot que de word directement (sans garanties, le html de word est vraiment illisible).

    Une fois ce traivaill accompli, une simple boucle avec replace et peut-être instr devrais suffire pour faire ton apli.

    mais bon, le plus dur, on ne peut pas te le donner.


    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 15
    Points
    15
    Par défaut Merci de ta reponse
    Merci pour ta reponse, mais je n'ai pas bien compris ce que tu voulais dire...
    Le plus gros du travail est de faire la correspondance des styles word avec les balises html ?, ca ce n'est pas trop galère mais je ne connais pas l'instruction macro pour rechercher un "style" qui n'ont dailleurs pas l'air d'être nommé comme dans la feuille de style, et mettre les balises devant et derrière.

    tu n'aurait pas un morceau de macro ou un lien ?

    merci quand même

    LuXmen

  4. #4
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    je ne suis pas trés clair, désolé.


    je pense que tu le sait, le html utiliste un grnad nombre de balises qui définissent un certains style. lorsque tu crée une page html, il faut que tu utilise une plétore de balise dés que tu fait quelque-chose d'un peu trévaillé.

    en Word, si tu les les fichiers doc non pas avec word mais avec par- exemple le bloc note, tu va t'apercevoir qu'il y à égualement une quantité encore plus importante de balises ou d'équivalent.

    le plus gros du travail, consiste donc à identifier les balises Word et à les faire corespondre avec des balises html.
    Le codage est quand à lui assez simple mais vient apres que tu aie fait tout cela.

    c'est donc cela que j'apelle le "gros" du travail.
    le reste n'est qu'un détails comparé à la base de donnée que tu vas devoir faire pour ton identification.

    j'espère que tu à compris.

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  5. #5
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pas trés simple.... pour faire des recherche de styles (gras par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Selection.Find.ClearFormatting
        Selection.Find.Font.Bold = True
    enregistre une macro puis menuword recherche/ Format/ gras...

  6. #6
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Au fait, avec quel logiciel programme -tu?
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 15
    Points
    15
    Par défaut Je ne le voyait pas comme ca...
    en VBA Word ...

    Mais Vous vous compliqué là non ??

    Mais en fait je voudrais juste recherche un "style" de la feuille de style, exemple "centregras" (qui est le nom de mon style dans word) et mettre une balise devant et derriere ce qui donnerait cela :

    <div align="center"><strong>Ceci est un test </strong></div>

    ce qui me donne mon code...

    ensuite je penserait faire un copier coller ou enregistrer au format txt et le renommer en html et tour est joué ! NON ?

  8. #8
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    he bien dans ce cas, il faut que tu identifie où sont tes termes "centrés"
    , tes termes gras, que tu identifie ceux qui sont l'un et l'autre, et tu vérifie qu'il ne sont pas à cotés(pour éviter de mettre 25 balise sur 25 mots qui se suivent).
    en suite, tu pet=ut mettre un code du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim terme as string 'tu met là un terme que tu vient de trouver.
    tontexte=replace(tontexte, terme,"<div align="center"><strong>" & terme & "</strong></div>")
    comme tu le vois, le code de remplacement est pas compliqué mais pour ce qui est de trouver les terme d'un type donné...
    je n'ai pas fait de vba. demande à bbil, je pens qu'il doit connaitre les bonnes balises.

    salut
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 15
    Points
    15
    Par défaut merci bien de ton aide
    Merci pour ton aide...


    je vais voir ca

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par luxmen
    Salut, juste une petite question,

    tu m'a dit comment trouver les txt gras, mais sait tu plutot comment trouver un style (j'ai l'impression qu'il n'ont pas le meme nom que dans la feuille de style...)

    merci
    pour la recherche de style ...
    utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Selection.Find.ClearFormatting
        Selection.Find.Style = ActiveDocument.Styles("Titre 1")
    cependant, l'utilisation des foncitons de recherche ... pour généré ton HTML me semble ardue...
    une solution me semble plus réalisable, c'est le parcours du document charactéres/charactéres, grâce à une boucle For Each .. ActiveDocument.characters ...
    voici un début de code :

    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
    31
    32
    33
    34
    35
    36
     
    Sub test()
     Dim c As Range
     Dim mBold As Integer 'memo passage en booelan
     Dim mAlign As Integer ' memo alignement
     Dim stTexte As String 'Chaine ...
     For Each c In ActiveDocument.Characters
     
      'Traitement passage en gras
      If c.Bold <> mBold Then
          stTexte = stTexte & "<"
          If c.Bold = 0 Then stTexte = stTexte & "/"
          stTexte = stTexte & "strong>"
          mBold = c.Bold
      End If
     
      'Traitement alignement ...
      If c.ParagraphFormat.Alignment <> mAlign Then
     
          If c.ParagraphFormat.Alignment <> wdAlignParagraphCenter Then stTexte = stTexte & "</div>" _
           Else stTexte = stTexte & "<div align=""center"">"
          mAlign = c.ParagraphFormat.Alignment
        End If
     
       If Asc(c) = 13 Then stTexte = stTexte + "<BR>" ' Saut de ligne...
     
     
       stTexte = stTexte + c 'Rajout du caractére...
      Next
      If mBold = -1 Then
       stTexte = stTexte & "</strong> 'Ferme la derniére balise gras"
      End If
     
      Debug.Print stTexte
     
    End Sub
    reste un probléme à traiter .. c'est l'imbrication des balises....si par exemple tu as du texte centré.. qui passe du gras au /gras... en restant centré.. ( !!! lol c'est pas trop clair...)
    ..
    de plus il doit y avoir moyen de savoir dans quel style on est ? .. à voir..

    voir :

  11. #11
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 40
    Points : 15
    Points
    15
    Par défaut
    merci c cool, je test

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello,

    J'allais te proposé autre chose mais je ne sais pas si tu peux l'adapter... (jamais écrit en html)

    Quand on définit le format d'un mot, on a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        With Selection.Font
            .Name = "Tahoma"
            .Size = 11
            .Bold = True
            .Italic = True
            .Underline = wdUnderlineNone
            .StrikeThrough = False
            'etc.
        End With
    Pour lire le format, tu as donc cette possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Police, italique, Taille, GrasPasGras, Souligné, Barré, DoubleBarré ' etc
        With Selection.Font
            Police = .Name
            Taille = .Size
            GrasPasGras = .Bold = True
            italique = .Italic
            Souligné = .Underline
            Barré = .StrikeThrough = False
        End With
    ou celle de créer un tableau de ces caractéristiques

    Ensuite, tu peux créer une fonction remplaçant dans une boucle chaque caractéristique par tes balises

    Juste une idée

    A+

  13. #13
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    en fait, je penser à recuperer la syntaxe word (en binaire je crois) et à la convertir en html.

    le problème est évidement de la trouver.

    comme le format est secret
    (cfici)

    bonne chance
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

Discussions similaires

  1. [RegEx] Recherche de mots et balises HTML
    Par Tchupacabra dans le forum Langage
    Réponses: 11
    Dernier message: 18/08/2008, 20h00

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