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
    Patrick

    Suite à l’article de PileFace, le site référencé est à vendre.
    Est-ce que quelqu’un connait « SpipEdit » et est-ce que le résultat est valable ?
    Si c’est un programme sympa, est-ce qu’il existe encore et est-il mis à jour ?

    Merci.

    Webmaster Sports Center

    • Excellente macro, qui m’évite des heures de travail pour coller de l’italique dans des bibliographies. L’auteur en soit remercié jusqu’à la fin des temps ! Bien préparer ses documents word, et poï basta ! On aura rangé la macro où on veut (extension de fichier dotm), on l’ouvre, on choisit le fichier à cconvertir, on file dans spip et on colle. On relit. Point !

    Répondre à ce message

  • 2
    Fennec72

    Est-ce que cette macro, que j’utilise avec bonheur avec Office 2000, fonctionne avec Office 2007 ?

    J’aimerais le savoir, au cas où, pour l’un des sites dont je m’occupe, un nouveau rédacteur utilisant office 2007 serait intéressé par cette formidable macro.

    Merci d’avance

    • H2Fooko

      Bonjour,

      Ayant téléchargé une version d’évaluation de MS Word 2007, j’ai testé la macro de conversion d’Alexis, malheureusement le 1er test effectué montre que si la macro fonctionne avec MS Word 2007 (on retrouve le bouton poussoir), le résultat de la conversion sur le seul et unique fichier créé pour l’occasion n’est pas satisfaisant.

      Correction et test sur :
      http://h2fooko.free.fr/spip.php?article24

    • je me répond à moi-même :

      çà marche très bien !

      Et pour avoir la Macro Word dans les modèles, quand on fait Nouveau> Mes Modèles... ,

      1. ouvrir le « Document Spip.dot » dans word 2007,
      2. un bandeau « Avertissement de sécurité Les macros ont été désactivées. » s’affiche,
      3. cliquez sur Options..., puis sur Activer le contenu puis OK
      4. Enregistrer sous>Modèles Word et choisir en haut de la colonne de gauche « Modèles approuvés »,
      5. choisir alors, dans « Type de fichier », "Modèle Word prenant en charge les macros (*.dotm)

      Maintenant, lorsque vous faites Nouveau> Mes Modèles... , vous avez alors parmis les modèles proposés, « Document Spip.dotm », la versions Word 2007 de « Document Spip.dot ».

      Et « Document Spip.dotm » fonctionne aussi bien sous Word 2007 que « Document Spip.dot » fonctionnait avec Word 97 , 2000 et 2003.

    Répondre à ce message

  • 1
    Pierre Martel

    Existe-t-il l’équivalent pour word sur Mac ?
    Merci.

    • La macro marche bien dans « Office 2004 » pour Mac OS X, mais n’est pas accepté par « Office 2008 ».

    Répondre à ce message

  • La Macro plante pour les colspan et les rowspan (cellules fusionnées en lignes et colonnes).
    Ca à déjà été signalé quelque part dans les commentaires, mais sans réaction...

    Sachant que les raccourcis typographiques spip gèrent :

    • les lignes fusionnées
      |<|
    • et les colonnes fusionnées :
      |^|

    ... il doit y avoir un moyen d’intégrer ça à la macro.

    J’ai vu une macro word pour vba qui gère les colspan ici , mais je n’y comprends rien aux macros word. J’ai bien l’impression qu’il y a des éléments en trop et d’autres qui manquent (la gestion du rowspan ?), mais je nage...

    Une piste ?

    Répondre à ce message

  • 2

    existe il une mise à jour pour SPIP 191 ou 192 ?

    • Pas de mise à jour, mais ce n’est pas nécessaire, cette version fonctionne parfaitement, je ne sais pas trop pourquoi c’est dans les archives ! ?

    • pourquoi ? .. parce que personne n’avait exprimé clairement sa validité à ce jour, ou qu’aucun admin ayant l’information ne s’était penché sur la question. Voici donc cette contrib sortie des archives (plus quelques compléments cf. forum de rédac)

      Merci pour cet avis

      @+ NicolasR

    Répondre à ce message

  • 3

    pour faire focntionner la macro sosu XP vous devez la mettre dans :

    C :\Documents and Settings\julien\Application Data\Microsoft\Modèles

    julien est mon nom d’utilisateur

    • Sous Windows 2000 Pro aussi

    • marabbeh

      En fait ça dépend où tu as mis tes modèles. Il suffit de faire Outils / Modèles et compléments / Attacher et là tu vois où sont stockés les modèles.

    • Vous avez maintenant mieux : spipedit
      Téléchargement : http://www.spipedit.com/
      Son utilisation m’a grandement facilité la récupération de textes scannés en format éditable et reprise d’articles Internet
      Je prépare mes articles SPIP sous Word et les convertit très correctement avec spipedit : italique, gras, retour à la ligne, même les titres si vous utilisez un titre Word de façon homogène.

      http://www.pileface.com

    Répondre à ce message

  • 1

    Bonjour,

    quelqu’un connait-il un editeur ou une macro qui ferait exactement l’inverse de ce que peut réaliser cette macro ??!!

    c’est à dire pouvoir d’un texte spipé (avec tous les tags typographiques propres à spip, aller vers u ntxte qui serait :

    - soit rendu en texte pur sans style (pas de gras, titre, ...)
    - soit rendu avec toutes les nuances typgraphiques (gras, italic, ...) que l’on pourra réediter dans word ou autre .

    Merci

    • si ton site est bien fait ca marche tout seul de IE6 vers word avec un simple copier coller d’un article

      va voir sur www.pyrat.net. Copie le corps de l’article avec son titre colle le dans word. Tu récupères tout très proprement. avec meme le plan dans l’explorateur de document, c’est bluffant

    Répondre à ce message

  • Voici une solution au bug des accolades et italiques imbriqués dans des sauts de lignes ou de paragraphe :

    Avant d’executer les remplacements italique et paragraphes, exécuter la macro suivante :

    Private Sub Spip_MeF_Prepare_ItalicGras()
        Selection.WholeStory
        Selection.Find.Font.Italic = True
        With Selection.Find
            .Text = "^p"
            .Replacement.Text = "^p"
            .Replacement.Font.Italic = False
            .Execute Replace:=wdReplaceAll
            .ClearFormatting
            .Replacement.ClearFormatting
        End With
        Selection.Find.Font.Bold = True
        With Selection.Find
            .Text = "^p"
            .Replacement.Text = "^p"
            .Replacement.Font.Bold = False
            .Execute Replace:=wdReplaceAll
            .ClearFormatting
            .Replacement.ClearFormatting
        End With
        Selection.Find.Font.Italic = True
        With Selection.Find
            .Text = "^l"
            .Replacement.Text = "^l"
            .Replacement.Font.Italic = False
            .Execute Replace:=wdReplaceAll
            .ClearFormatting
            .Replacement.ClearFormatting
        End With
        Selection.Find.Font.Bold = True
        With Selection.Find
            .Text = "^l"
            .Replacement.Text = "^l"
            .Replacement.Font.Bold = False
            .Execute Replace:=wdReplaceAll
            .ClearFormatting
            .Replacement.ClearFormatting
        End With
    
    End Sub

    Répondre à ce message

  • 1
    Olivier

    Cette macro est-elle compatible avec Word 2003 ?

    • pseudomenace

      mais oui elle est compatible avec word 2003 !

      sans problème !

      je l’ai testé à pluieurs reprises !

      ps : personnelement je prépare une amélioratio nde cette contributio nalors soyez patients !

      @+

    Répondre à ce message

  • 1

    Salut,

    J’ai modifié la macro comme suit, sinon ça plantais avec des grands tableaux :

    ’ Convertion des tableaux Word en format SPIP

    ’ remarques : - des espaces sont rajoutés en fin de cellule pour contourner le problème des cases vides

    Sub spip_tableau()

    If ActiveDocument.Characters.Count > aRange.End Then

    If ActiveDocument.Characters(aRange.End + 1) <> Chr(13) Then

    aRange.InsertAfter Chr(13)

    End If

    End If

    End Sub

    Sinon très bien ta macro ;-)

    Antoine

    • Débutant en « word » (je le resterais bien, m’enfin), je ne trouve pas comment on peut modifier la macro. Elle s’affiche systématiquement en « ne peut pas être modifiée » quand on essaie de l’éditer via les commandes word…

    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