Les bricolages de Heffgé |
Les macros proposées ici sont des scripts utilisant le langage VBA (Visual Basic Application) inclus dans Word à partir de la version Word 97 (98 pour les Mac). Elles ne peuvent donc pas être utilisées sous Word 6 ou des versions antérieures.
Ces scripts sont si courts qu'il n'a pas été prévu de téléchargement. Il suffit de faire un copier/coller du texte vers la destination de son choix.
Dans Word il y a deux manières de provoquerr un passage à la ligne suivante, utiliser la touche "Entrée" ou bien la combinaison "Maj + Entrée". Dans le premier cas on demande d'entammer un nouveau paragraphe, dans l'autre on indique simplement qu'on change de ligne. Ces deux méthodes n'ont pas forcément les mêmes effets sur la mise en forme.
La touche "Entrée" génère le caractère appelé retour charriot (CR pour carriage return, code hexadécimal 0D) représenté à l'écran par le symbole ¶. La combinaison "Maj + Entrée" provoque l'insertion du caractère tabulation verticale (VT pour vertical tabulation, code hexadécimal 0B) qui lui est représenté par le symbole ↵.
Quand le texte est justifié (alignement sur les marges gauche et droite) la mise en forme sera différente dans l'un et l'autre cas. Dans le premier la ligne est interrompue, dans l'autre elle étirée d'une marge à l'autre comme on le voit dans l'exemple ci-dessous.
Quand on insère un texte copié sur une page de la toile dans un document Word justifié, les passages à la ligne ne sont pas pris comme des demandes de nouveau paragraphe et l'on obtient cet effet visuel désastreux.
Il est exaspérant de devoir à chaque fois remplacer ces ↵ par des ¶. La manœuvre est simple mais il faut néanmoins connaître toutes les subtilités du Rechercher - Remplacer pour parvenir à ses fins. Elle devient vite fastidieuse quand il faut la répéter souvent ou, au contraire, on la pratique si peu souvent qu'on l'oublie d'une fois sur l'autre.
Le remède passe par la création d'une macro. On pourrait se contenter d'utiliser l'enregistreur automatique de macros mais celui-ci a tendance à générer une pleine page de code VBA quand le script pourrait tenir en deux lignes.
Voici donc un script minimum pour réaliser automatiquement ce remplacement.
Sub paragraphes()
Selection.WholeStory
With Selection.Find
.Text = "^l"
.Replacement.Text = "^p"
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey
End Sub
Pour plus de commodité la macro pourra être affectée à un bouton de la barre d'outils réalisé à l'aide de l'éditeur de boutons.
Après qu'on a résolu ce problème de mise en forme on peut vouloir supprimer tous les liens hypertexte quand leur présence ne s'impose pas. Cette opération est encore plus fastidieuse que la précédente car on est obligé de les supprimer un par un.
Elle pourra toutefois être réalisée en un seul clic grace à la macro dont voici le script :
Sub sup_liens()
Do While ActiveDocument.Hyperlinks.Count <> 0
ActiveDocument.Hyperlinks(1).Delete
Loop
End Sub
Il peut arriver également qu'on veuille récupérer dans un document Word la liste de tous les liens hypertexte contenus dans un autre. C'est ce que fait le script ci-dessous :
Dim liste, lien, url
Dim dat As New MSForms.DataObject
Sub lst_liens()
For Each lien In ActiveDocument.Hyperlinks
url = lien.Address
If InStr(lien.Address, "mailto:") = 0 Then
liste = liste + lien.Address + vbCrLf
End If
Next
If Len(liste) <> 0 Then
dat.settext (liste)
dat.putinclipboard
Documents.Add.Content.Paste
Else
MsgBox ("Aucun lien dans ce document")
End If
End Sub
Le document contenant la liste est crée automatiquement. Les liens de type mailto n'y sont pas inclus.