Macro Word

Macro pour convertir un document Microsoft© Word 97 au format SPIP 1.3

Nota SPIP-Contrib : une contribution déjà ancienne (une des première sur SPIP-Contrib en fait, mais qui semble encore d’actualité avec SPIP 1.9 ... n’hésitez pas à faire remonter via le forum toute éventuelle précision ou correction nécessaire

Pas à pas

L’installation

  • renommer « macro_word.dot » en « Document Spip.dot » (c’est plus joli !) ;
  • copier « Document Spip.dot » dans C :\Program Files\Microsoft Office\Modèles\Autres Documents [1] ;
  • Démarrer Word ;
  • choisir Fichier->Nouveau->Autres Documents->Document Spip.dot ;
  • Taper du texte en utilisant les styles proposés ;
  • Puis générer du texte au format SPIP dans un nouveau document en cliquant sur la petite baguette magique sous « Edition ».

Fonctionnement

Cette macro est composée de plusieurs sous-macros. « versSpip » étant la macro principale appelant les autres une à une, dans un ordre bien défini.

Ces macros sont indissociables des styles qui viennent avec le fichier « macro_word.dot ».
Elles utilsent plus particulièrement les styles :

  • wdStyleNormal (« Normal »)
  • wdStyleHeading1 (« Titre 1 »)
  • wdStyleHeading2 (« Titre 2 »)
  • wdStyleHeading3 (« Titre 3 »)
  • wdStyleList (« Liste »)
  • wdStyleHyperlink (« Lien Hypertexte »)
  • « Code »
  • « Lien en code SPIP »
  • « Html »

« versSpip » effectue les transformations suivantes :

  1. passe les paragraphes n’utilisant pas un des styles précédents au style « Normal » ;
  2. transforme les paragraphes de style « Titre 1 » en : {{{texte}}} ;
  3. transforme les paragraphes de style « Titre 2 » en : {{texte}}<br /> ;
  4. transforme les paragraphes de style « Titre 3 » en : {texte}<br /> ;
  5. transforme le texte italique+gras (même dans les tableaux) en : {{ {texte} }} ;
  6. transforme le texte italique (même dans les tableaux) en : {texte} ;
  7. transforme le texte gras (même dans les tableaux) en : {{texte}} ;
  8. transforme les tableaux Word en tableaux SPIP en ajoutant un saut de ligne avant et après si nécessaire ;
  9. transforme les sauts de ligne individuels entre deux paragraphes de style « Normal » en : <br /> ;
  10. transforme les paragraphes de style « Liste » en : - texte ;
  11. transforme les notes Word en note SPIP : [[une note]] ;
  12. transforme le texte gris (style « Code ») en : texte ;
  13. transforme le texte vert pas beau (style « Html ») en : <html>texte</html> ;
  14. transforme les liens Hypertexte de Word en : [lien->adresse du lien] (le style « Lien en code SPIP » ne fait que colorier du texte en bleu et permet d’écrire directement les liens avec la syntaxe de SPIP. Le texte ne sera pas modifié.) ;
  15. transforme les images (flottantes ou non) en : <IMGn|left> (n étant leur ordre d’apparition dans le document) ;
  16. créée un nouveau document avec le code SPIP généré et en effectue une copie dans le presse-papier.

Les bugs

-  Si le document source commence (ou fini) par un tableau la macro plante : la macro vérifie si une ligne a bien été sautée avant (et après) le tableau, sinon SPIP ne le reconnaîtra pas. Or s’il n’y a aucun caractère avant (après) le tableau, le test de VisualBasic ne marche pas ??? Donc, la solution est simple ... Ne commencez pas votre document par un tableau et, si votre document fini par un tableau, sautez une ligne juste après !

-  Si les lignes d’un même tableau n’ont pas toutes le même nombre de colonnes la macro plante : C’est normal ! SPIP ne gère que des tableaux simples.

-  Problème de "<br />" imbriqué dans des accolades dans le code généré : Si, par exemple, la fonction Find de Visual Basic recherche du texte en gras. Le texte trouvé est sélectionné, puis la macro reformate le tout pour SPIP... Malheureusement avec Word, si vous finissez une ligne par du texte en gras, le saut de ligne est aussi en gras. Bref, « texte_en_grasPtexteP » sera remplacé par "{{texte_en_gras<br />P}}texteP". Et ceci peut causer quelques problèmes dans des cas extrèmes. Je cherche une facon d’obtenir "{{texte_en_gras}}<br />PtexteP", mais je n’y arrive pas. Donc, avis aux pros du VB, si vous avez une solution, je suis preneur.

Notes

[1Nota SPIP-Contrib : chemin valable si vous travaillez sous Windows, à adapter pour les autres environnement

Note des admins : cette macro a été créée par Alexis. Denis a ajouté la gestion des liens internes.

Discussion

38 discussions

  • 1

    Je ne comprends pasjai telechargé la macro mais je ne la vois pas quand je fais nouveau document
    j ai word 2000 sous windows XP pro
    meme quand je clique 2 fois sur la macro j ai une page blanche qui s ouvre dans word

    • Bonjour,
      je crois avoir trouvé la solution : il faut coller la macro dans le répertoire :
      c :\documents and settings / « nom utilisateur » / Application Data / Microsoft / Modèles

      C’est dans ce répertoire que tu trouves le normal.dot de Word.
      Ensuite dans Word lorsque tu fais Nouveau document, Document.spip.dot apparait dans l’onglet général.

      Chez moi, ça marche

    Répondre à ce message

  • je ne fais qu’un essai
    dv

    Répondre à ce message

  • François Daniel Giezendanner

    Je vante régulièrement les multiples qualités et mérites de SPIP, et je suis régulièrement confronté à des enseignants pour qui ajouter quelques caractères de mise en pages constituent malheureusement une barrière quasi infranchissable qui les incites à se tourner vers d’autres CMS (plus WYSIWYG) offerts par d’autres portails.

    Par conséquent la Macro Word est un élément précieux. Cependant je déplore qu’au Monde du Libre dont SPIP est une belle illustration, d’aucun s’obligent à utiliser exclusivement Microsoft-Word en y développant des macro. Ainsi le monde du libre fait de Microsoft-Word un passage obligé pour assurer la convivialité de SPIP, il s’agit là d’un paradoxe qui me laisse songeur.

    Or fait surprenant, dans le monde du libre la solution existe avec des suite tels que Open Office et Star Office (et probablement d’autres...).

    Tout cela pour dire qu’à ce jour, dans le monde du libre, personne n’a proposé d’équivalent Macro-Word SPIP pour ces suites. Il s’agit là d’une lacune qu’il est urgent de combler.

    Je fais donc un appel au peuple pour inciter les gens qui maîtrisent suffisamment VB à convertir cette macro pour Open Office et Star Office (pour lesquels un équivalent VB existe probablement), afin qu’elle existe aussi et enfin dans le monde du libre.

    Répondre à ce message

  • Vincent François

    J’utilise cette macro depuis plusieurs mois avec succès et plaisir. Depuis peu, elle plante Word 2000 sur mon Windows 2000 au moment de cliquer sur la baguette magique.

    J’ai désinstallé/réinstallé Word, désinstallé/réinstallé la macro, sans succès.

    Quelqu’un a-t-il déjà rencontré ce problème ?

    Répondre à ce message

  • merci pour cette macro
    cela apporte tout de même un peu de confort surtout pour les tableaux

    Répondre à ce message

  • HELP lorsque je renome un fichier contenant des macros, les autres fichiers contenants les mêmes macros ne fonctionnent plus

    Répondre à ce message

  • merci pour la macro :-)

    Répondre à ce message

  • bonjour !
    j’aime le php.

    Répondre à ce message

  • Utilitaire efficace. merci aux concepteurs.

    Existerait-il une version StarOffice car la version actuelle pas reconnue ?

    Quelles modif à effectuer ?

    Merci encore.

    Répondre à ce message

  • 1

    C’est une excellente idée. Le seul problème est que le « Visual Basic » de OO n’a pas exactement les mêmes fonctionnalités que celui de Microsoft. Mais sinon, ça se ressemble beaucoup. Si quelqu’un est volontaire pour le faire, je suis pret à l’aider, malgré le peu de temps dont je dispose actuelement. :-((

    Si quelqu’un est motivé aussi, il faudrait mettre à jour cette macro avec les nouveaux raccourcis typographiques de SPIP-1.5. (« _ « pour les sauts de ligne, »-**... » pour les sous-listes, etc.). Je veux bien le faire dès que j’ai le temps :-o , mais si ces fonctionnalités vous manquent, n’hésitez pas...

    • marabbeh

      J’ai essayé de convertir en SPIP les tableaux avec cellules fusionnées, mais je me suis planté lamentablement :’-( VBA ne connaît pas les fusions verticales... alors que Word sait même les convertir en HTML.

      Il y a bien la solution d’utiliser la conversion HTML, mais il faut la nettoyer du code parasite généré par Word, même avec la fonctionnalité HTML Compact. De la part d’un rédacteur, ça fait beaucoup de manips pour un tableau... Je n’ai toujours pas trouvé de solution...

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom