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

  •  :-D Bonjour à tous,

    peite question ... comment peut -on lier deux macros entre elle en word ?

    Répondre à ce message

  • 1
    Bertrand

    Bravo pour cette macro, mais il manque une chose importante et je n’arrive pas à le corriger moi-même : il y a deux types d’apostrophes, de codes ASCII 146 et 39, et la première ne passe pas bien, et est donc remplacée par un point d’interrogation quand on uploade le texte dans SPIP. Il faudrait donc remplacer les apostrophes 146 par des 39. Malheureusement malgré mes bidouillages je n’y arrive pas !

    • Voici comment faire :
      Dans la macro principale versSpip - i.e. la section commençant par "Sub versSpip()" - il y a une ligne à décommenter " ’spip_guil ". Puis dans la sous-macro spip_guil - i.e. la section commençant par "Sub spip_guil()" - il suffit d’adapter deux lignes à vos besoins :

      .Text = "« "
      .Replacement.Text = "&#171 ;"

      Rq : le deuxième paragraphe de spip_guil (qui débute par " ’ »") peut être supprimé.

    Répondre à ce message

  • 1
    Pascal Coppolani

    Salut. Ce qui serait formidable, serait de prévoir des macros pour Open Office.org= donc macro SPIP/libre pour OO.org en open source ;-)

    • Ah oui ! bonne idée cette macroSpip pour OpenOffice ! ;-)

      dumbies

    Répondre à ce message

  • dumbies

    Bonjour,

    J’administre le site d’un centre de recherche universitaire et utilise un Mac OS9.2 à la fac (Word 2001). Apparemment la macro ne fonctionne pas, aucune baguette magique ni autre commande n’apparaissant sous « édition ».
    Chez moi, Word97 sous Wind98 la macro marche très bien et j’en profite pour dire un grand merci à Alexis !!
    Avez-vous une solution ?

    Répondre à ce message

  • 1
    sgamier

    Bonjour, bravo pour cette macro.

    En revanche je n’arrive pas a refaire les couleurs de mes textes.

    Il n’y a pas de code HTML qui s’ajoute pour cela.

    Normal ?
    pas prévu ?

    Ou j’ai raté qq choses ?

    Sebastien Gamier

    • Ce n’était pas prévu car SPIP ne sait pas le faire (pas de raccourcis typographiques). Par contre c’est assez simple à réliser car VB permet d’identifier des blocs de texte en fonction de leur couleur... plus qu’à rajouter '<html><font color="#xxxxxx">' et '</font></html>' avant et après.

    Répondre à ce message

  • 2

    comme vous l’expliquiez, j’ai en effet téléchargé la macro et je l’ai enregistré dans C :\Documents and setting\deddy\Application Data\Microsoft\Modèles (deddy étant mon nom d’utilisateur pour Xp) ; seulement, lorsque je vais cherché le modèle de document SPIP sous Word, il m’affiche tout le protocole de la macro, mais ne l’exécute pas.
    Que dois-je faire et comment dois-je faire pour enfin avoir cette macro ?
    Je suis novice et j’ai vraiment besoin d’aide alors s’il vous plait AIDEZ-MOI !!!

    • Pour vérifier simplement que tout fonctionne, un double-clique sur le fichier .dot doit normalement ouvrir le modèle de document SPIP. Puis, si rien ne se produit lorsque vous cliquez sur la petite baguette magique, c’est que peut être que les macro sont désactivées (cf. Préférences de Word). Si vous ne voyez pas de baguette, allez dans le menu Macro et lancez « versSPIP » à la main.

    • Merci de m’avoir répondu et aider, mais ce que vous m’indiquez, je l’ai déjà fait et ça ne fonctionne pas !!! si vous avez une autre solution, elle serait la bien venue.

    Répondre à ce message

  • Pierre Mounier

    Bonjour à tous,

    la macro ne respecte pas par les italiques dans les notes, ce qui est très gênant car c’est là qu’on met généralement les références bibliographiques.

    J’ai mis deux heures à trouver, mais j’ai trouvé ! Donc je partage la solution :

    Avant d’effectuer un traitement global, il faut sélectionner les notes uniquement et faire outils>macros, puis sélectionner spip_italique et faire « Exécuter la macro ». On n’exécute donc que le traitement des italiques. Ensuite, on peut appliquer le traitement global. J’imagine que ça vaut pour les mots en gras, mais je m’en fiche, je n’en ai pas :-)

    A+

    Répondre à ce message

  • J’ai cherché quelques minutes le dossier Application Data dans le répertoire à mon nom.... voici la solution :

    il faut afficher les fichiers et dossiers cachées, dans le menu Outils, Options des dossiers..., onglet Affichage.

    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