Outils Les bricolages de Heffgé

Quelques macros pour Word

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.

Saut de ligne et nouveau paragraphe

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.

Suppression des liens hypertexte

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

Liste des liens hypertexte

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.

 

Toutes les pages du site Les autres sites

accueil
carnet d'adresses et enveloppes
comparaison de dossiers
connexion/déconnexion
contenu d'un dossier
contrôle GPO
conversion ASCII/ANSI
débrider une Livebox SAGEM ou Inventel ancien modèle
gérer un fichier à générations dans un .bat
les pilotes oubliés
mise à la date et à l'heure automatique
nettoyage et arrêt Windows 9x
orthodromie
vidage du répertoire Temp utilisateur et suppression des fichiers temporaires Internet Explorer (Windows XP et Windows 7)
quelques macros pour Word

Tentatives de bonnes réponses à des questions qui peuvent ne pas l'être

 

Le DOS sied