samedi 2 août 2008, par H2Fooko
Toutes les versions de cet article :
Avec l’arrière pensée d’améliorer la macro de conversion de Word vers SPIP, j’ai décidé de développer une macro préliminaire afin de me familiariser aux dessous de la programmation des styles de MS Word.
Ce faisant j’ai été confronté aux imperfections de Word et du même coup profité de cette occasion pour y remédier quelque peu.
Macro écrite en VBA (Visual Basic for Application)
Microsoft Visual Basic 6.3 version 1024
VBA retail 6.5.1024 Forms3 : 12.0.6025.500
Pour les versions de Windows et Word, suivre le lien.
Concernant le N° de révision de ma macro, voir le paragraphe correspondant.
L’installation est simple puisqu’il suffit de déposer le fichier modèle de document : « style management.dot » contenant mes macros dans le répertoire :
C:\Documents and Settings\
Identifiant\Application Data\Microsoft\Word\STARTUP
Avec la particularité suivante, le nom de répertoire « Identifiant » doit être remplacé par votre identifiant de session Windows.
Autre particularité, dépendant cette fois de la langue d’installation de MS Word, le répertoire « STARTUP » est parfois nommé « DEMARRAGE ».
Vérification rapide :
Lancez MS Word, vous devez découvrir un nouveau menu nommé « Styles » :
Et dans le menu de MS Word Outils -> Modèles et Compléments ... :
Le nouveau modèle de documents doit y figurer :
Maintenant vous pouvez ouvrir un document MS Word quelconque et analyser les styles.
Effectuez manuellement les actions suivantes :
Constatez que tout redevient comme avant, en relançant MS Word, et dans le menu de MS Word Outils -> Modèles et Compléments ... :
Une fois installé le modèle de document contenant les macros de gestion des styles MS Word, il apparaît à droite du menu classique de MS Word un nouveau menu qui, lorsqu’on clique dessus, apparaît comme suit :
Visualize n’ Clean : Visualiser et nettoyer
Trick Ghost Styles : Contourner les styles fantômes
Restore Header & Footer : Restaure l’entête et le pied de page
Delete Menu Style : Effacer le menu Style
About : A propos & Aide
Voyons dans le détail chacun de ces sous-menus :
En sélectionnant le sous-menu ’Visualize n’ Clean’ du menu ’Style’, on fait apparaitre une nouvelle fenêtre présentant les différents styles du document actif.
Il y a un style par ligne, avec pour chaque colonne des informations complémentaires :
Description des Zones de l’interface.
Les zones de l’interface sont mises en évidence grâce au changement de la couleur de fond de la dite zone lors du survol de la souris. La zone survolée peut prendre 2 couleurs possibles en fonction de la confiance que l’on peut apporter à ce qui est affiché (voir ci-dessous).
-> Retour sous Menu
Description des Colonnes de l’interface.
-> Retour sous Menu
Défilement des styles.
Vu le nombre de styles, il est impossible de les afficher simultanément sur l’écran. Alors l’ascenseur ou barre de défilement permet de parcourir les styles. Grâce à la souris et sa molette on peut faire défiler les styles jusqu’à découvrir les boutons d’actions au bas de l’interface utilisateur.
-> Retour sous Menu
Signification des couleurs.
Par défaut la couleur de fond des styles est grise. Elle le restera si le style n’est pas utilisé même indirectement.
La couleur de fond jaune indique que le style est utilisé directement dans le document actif.
La couleur de fond rose indique que le style est utilisé indirectement et indirectement seulement. Cela signifie qu’il est un style de base (... d’un style de base d’un style de base ...) d’un style utilisé mais n’est pas directement utilisé dans le texte. Cela permet de repérer un style qui changerait la physionomie du texte s’il venait à disparaître.
La couleur bleue indique que le style est prédéfini dans MS Word. Comme il peut être simultanément utilisé, la couleur bleue n’est pas seulement utilisée pour le fond de la 6ème colonne, mais aussi pour la police de caractère de toute la ligne.
La couleur verte du fond de l’interface indique que les informations qui y sont affichées résultent d’une analyse exhaustive du texte du document actif. On peut donc s’y fier.
La couleur orange du fond de l’interface indique que les informations qui y sont affichées résultent seulement de la mise à jour d’après les actions supposées effectuées par MS Word après une validation (bouton VALIDATE). En effet MS Word ne prévient pas (en tout cas je ne sais pas comment) quand il créée des styles fantômes.
-> Retour sous Menu
Info Bulles.
La plus intéressante des Infos Bulles est celle que l’on peut lire lorsqu’on survole la 2de colonne. En effet elle affiche la liste des styles qui utilisent le style survolé comme style de base.
Malheureusement, il faudrait que j’apprenne à faire un retour à la ligne dans les infos bulles. Allez par curiosité survoler le style ’Normal’ ;-)
Sinon en voici quelques unes :
-> Retour sous Menu
Voyons maintenant les boutons poussoir d’actions :
Validation.
Ce bouton poussoir permet d’executer les souhaits de renommage et d’effacement de l’utilisateur. L’interface utilisateur se redessine pour mettre en évidence les actions effectuées.
Compte tenu du comportement de MS Word avec les styles fantômes, notamment du fait de la mutation possible de ces styles fantômes, il est bon de relancer une visualisation complète en :
La couleur de fond de l’interface repasse alors en vert (voir ci-dessus la signification).
Vous noterez que certains styles fantômes ne disparaissent toujours pas. Pour remédier à celà un autre sous-menu permet de contourner cet état de fait.
-> Retour sous Menu
Annulation.
Permet de quitter l’interface utilisateur sans rien modifier. C’est l’équivalent de la croix blanche sur fond rouge en haut à droite des fenêtres de MS Windows.
-> Retour sous Menu
Sélection des styles inutilisés.
Ce bouton poussoir à 2 états (enfoncé - relâché) permet de sélectionner tous les styles non utilisés même indirectement et non prédéfinis. En gros ceci permet de filtrer en les sélectionnant tous les styles qui peuvent être effacés sans conséquences pour la mise en forme du document actif.
-> Retour sous Menu
Sauvegarde des styles affichés.
Ce bouton poussoir ouvre un nouveau document MS Word avec la liste des styles affichés dans l’interface utilisateur en gardant le même code de couleurs que celui de l’interface.
Ce document est nommé par défaut avec le préfixe « Style of » suivi du nom du document actif.
Attention ce nouveau document n’est pas sauvegardé, vous devrez le faire comme tout nouveau document au moyen des menus classiques de MS Word.
Une difficulté non résolue pour l’instant m’a contraint à afficher un message d’avertissement :
En effet je n’ai pas réussi à retourner automatiquement avec ma macro à l’interface utilisateur qui m’a permis de lancer la création de ce nouveau document.
Pour la signification des entêtes de colonnes de ce nouveau document, se reporter aux exemples.
-> Retour sous Menu
Démonstration des styles (prédéfinis).
Ce bouton poussoir ouvre aussi un nouveau document MS Word avec pour chaque paragraphe son nom, le style de base et le nom de la constante interne. Chaque style est appliqué au paragraphe qui le nomme.
-> Retour sous Menu
Suppression des Alias de style.
Ce bouton poussoir à 2 états (enfoncé - relaché) permet de suggérer un renommage des styles avec Alias :
Une fois le bouton poussoir enfoncé, tous les styles possédant un alias passent en mode d’édition du nom de style avec la suggestion de renommage sur fond blanc, et la case à cocher de renommage validée :
Si une validation suit, la macro tente de tous les renommer.
Si on relâche le bouton poussoir, les noms de styles initiaux sont remis en l’état initial.
En sélectionnant le sous-menu ’Trick Ghost Styles’ du menu ’Style’, on exécute une routine qui permet de contourner la difficulté d’effacer certains styles fantômes récalcitrants.
En effet dans le cas particulier des styles fantômes précédés d’un caractère ’blanc’ dans leur nom local :
qui ne sont pas effaçables avec le sous-menu précédent ’Visualize n’ Clean’, en lançant cette action on arrive malgré tout à les renommer :
et à faire disparaître ce fameux caractère ’blanc’.
La procédure à suivre :
Remarques :
J’ai choisi de ne pas exécuter systématiquement cette astuce de façon à pouvoir constater la présence des styles fantômes récalcitrants avant de pouvoir les effacer grâce à la procédure ci-dessus.
Cette astuce consiste à exporter le fichier MS Word sous forme XML et à le ré-importer dans la foulée. J’ai juste mis en pratique une constatation trouvée sur Internet. D’ailleurs vous trouverez un fichier *.xml résiduel dans le répertoire aux côtés du document traité.
En sélectionnant le sous-menu ’Restore Header & Footer’ du menu ’Style’, on exécute la seule procédure que je n’ai pas écrite, mais enregistrée au moyen de l’enregistreur de macro de MS Word.
En effet j’ai constaté malgré tout que l’éxécution du sous menu précédent ’Trick Ghost Styles’ modifiait la taille des entêtes. Heureusement la mise en forme du contenu n’est pas affectée !
On peut donc sincèrement se passer de l’exécuter.
Encore une verrue !
En attendant d’y remédier, le menu ’Style’ peut s’afficher plusieurs fois de suite.
J’ai pourtant prévu de l’afficher à l’ouverture et de l’effacer à la fermeture du document actif.
Première utilité :
Il arrive donc à force de manipuler avec MS Word que ce menu apparaisse plusieur fois. Il suffit de lancer ’Delete Menu Style’ pour pouvoir supprimer les menu surnuméraires ;-) un à un.
Deuxième utilité :
Ce menu sert à désinstaller la macro contenue dans le modèle de document. Pour cela voir plus haut la procédure.
Afin de suivre les éventuelles évolutions, le sous menu « About » permet d’avoir le numéro de révision de la macro.
On peut m’ecrire grâce au premier lien indiqué.
Enfin on peut accéder à l’aide en ligne grâce au dernier lien pointant sur cet article :
Les erreurs d’exécution suivantes, ont été contrées dans le code grâce à une gestion d’erreur permettant d’éviter qu’elles ne plantent brutalement la macro. Par contre, cela n’empêchera pas leur réapparition car elles traduisent bien souvent l’existence des styles fantômes.
Erreur d’execution ’5951’ : Le membre de la collection requis n’existe pas.
Il se trouve que je tente d’effacer un style qui a pourtant été recensé :
Erreur d’execution ’5173’ : Ce nom de style existe déjà ou est réservé pour un style prédéfini.
Erreur d’execution ’5834’ : L’élément dont le nom est spécifié n’existe pas.
Le style a pourtant été recensé, il est ou a été utilisé (.InUse à vrai), pourtant la recherche plante à cet endroit :
Erreur d’execution ’6054’ : Le nom de style Lien n’existe pas ou est d’un type incorrect.
En fait ici j’essaye de renommer le style suivant : « _vaiStandard Car Car1 ». Il a pourtant été recensé et affiché. On note que c’est un style de type paragraphe sans aucun style de base (vide).
Voilà qui est fait merci pour vos commentaires, et merci aux auteurs qui m’ont inspiré sur la toile ;-)
Retrouvez cette macro sur les très bons sites suivants :
VBFrance
Developpez