![]() |
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.
Il est bien exaspérant de devoir remplacer les sauts de ligne par des marques de paragraphe chaque fois qu'on insère un texte copié sur une page de la toile dans un document Word justifié. 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 de passer par l'enregistreur automatique de macros mais Word 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.