La plupart des imprimantes ont besoin d'une marge minimale pour imprimer, et en particulier les imprimantes à jet d'encre. Cette bordure de page est calculée depuis le bord du papier. Il s'agit donc de modifier la marge donnée à cette bordure :
Onglet Accueil, groupe Paragraphe, bouton Bordure, Bordure et trame, onglet Bordure de pages, bouton Options
Cela ne sert à rien de modifier les marges du document.
Cela dit, la marge maximum est de 31 pt (càd 1,09 cm) entre le bord de la page et la bordure, et pour beaucoup d'imprimantes, c'est quand même trop petit.
Dans ce cas, il faut régler la bordure par rapport au texte et non par rapport à la page : toujours dans la boîte de dialogue Option accessible via l'onglet Bordure de page, choisir "Texte" dans la liste déroulante "à partir de".
Régler les marges en conséquence en fonction du blanc à laisser entre le texte et la bordure.
On pourra, dans ce cas, également choisir si l'on souhaite que les en-têtes et pieds de page soient à l'extérieur ou à l'intérieur de la bordure.
]]>
Voici une macro reprise de la KB de Microsoft, et traduite :
Sub ListFonts()
Dim varFont As Variant
Application.ScreenUpdating = False
' Crée un nouveau document sur la base du normal.dot
Documents.Add Template:="normal"
' fait une boucle sur chaque fonte
For Each varFont In FontNames
With Selection
.Font.Name = "times new roman"
.Font.Bold = True
.Font.Underline = True
.TypeText varFont
.InsertParagraphAfter
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
.Font.Bold = False
.Font.Underline = False
.Font.Name = varFont
' entre un exemple de texte (les lettres de l'alphabet)
.TypeText "abcdefghijklmnopqrstuvwxyzéèùîù"
.InsertParagraphAfter
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
' Insérer exemple texte(les caractères numériques)
.TypeText "0123456789?$%&()[]*_-=+/<>"
.InsertParagraphAfter
.InsertParagraphAfter
.MoveDown unit:=wdParagraph, Count:=1, Extend:=wdMove
End With
Next varFont
Application.ScreenUpdating = True
End Sub
Dans le document en question, faire une macro automatique qui se déclenchera à l'ouverture du document :
Sub AutoOpen()
Application.ActivePrinter = "HP Deskjet local on LPT1:"
end Sub
et une autre qui se déclenchera à la fermeture du document pour récupérer l'imprimante habituelle :
Sub AutoClose()
Application.ActivePrinter = "Ma laser local on LPT2:"
End Sub
Pour avoir le nom exact de l'imprimant par défaut, vous pouvez ajouter temporairement cette ligne :
MsgBox "Imprimante par défaut $" & ActivePrinter & "$"
Le rôle des $ est de mettre en évidence un éventuel espace perturbateur.
]]>Une autre solution consiste à affecter une macro aux commandes "FilePrint" et "FilePrintDefault", macros à mettre dans le fichier en question (et non pas dans le normal.dot) :
Sub FilePrint()
MsgBox "Impossible d'imprimer"
End Sub
Sub FilePrintDefault()
MsgBox "Impossible d'imprimer"
End Sub
La première sera exécutée quand l'utilisateur fera CTRL-P ou cliquera sur le menu Impression. La deuxième sera appellée quand l'utilisateur cliquera sur le bouton de l'imprimante de la barre d'outils standard (Word 2000-2003) ou de la barre d'outils Accès rapide (Word 2007 et ultérieur).
Attention : cette méthode n'empêchera pas l'utilisateur d'insérer le fichier dans un nouveau, puis d'imprimer !).
Gardez à l'esprit qu'aucune sorte de protection n'est insurmontable pour qui le souhaite vraiment.
]]>
La macro suivante ajoute des soulignés rouge pour les fautes d'orthographe et des soulignés bleus pour les fautes de grammaire. Elle imprime puis ôte tous ces soulignés.
Pour cela, il faut une petite macro :
Sub InsertAutoCorrectEntries()
Dim ACE As AutoCorrectEntry
' Create new document.
Documents.Add
' Iterate through AutoCorrect entries.
For Each ACE In Application.AutoCorrect.Entries
' Insert each entry name and its value on a new line.
Selection.TypeText ACE.Name & vbTab & ACE.Value & " " & vbCr
Next
' Format document for three columns.
With ActiveDocument.PageSetup.TextColumns
.SetCount NumColumns:=3
.EvenlySpaced = True
.LineBetween = True
.Width = InchesToPoints(1.67)
.Spacing = InchesToPoints(0.5)
End With
' Set TabStop for all three columns.
ActiveDocument.Paragraphs.TabStops(InchesToPoints(0.88)).Position = _
InchesToPoints(0.88)
End Sub
source : KB Microsoft
]]>
Cette macro insère un saut de page à la fin du document et liste les signets présents dans le document sur cette nouvelle page. Il reste ensuite à imprimer la page.
Public Sub ListeSignets()
Dim Signet As Bookmark
With ActiveDocument.Content
.Collapse Direction:=wdCollapseEnd
.InsertBreak Type:=wdPageBreak
For Each Signet In ActiveDocument.Bookmarks
.InsertAfter Signet.Name & vbCr
Next Signet
End With
End Sub
À partir de la collection des signets on peut, par exemple, associer un commentaire à chaque signet affichant le nom du signet :
Public Sub AfficheNomSignet()
Dim varSignet As Bookmark
Application.ScreenUpdating = False
For Each varSignet In ActiveDocument.Bookmarks
ActiveDocument.Comments.Add
Range:=varSignet.Range, Text:=varSignet.Name
Next varSignet
Application.ScreenUpdating = True
End Sub
]]>
Voici une macro qui masque le pied de page pour l'impression puis le rétablit ensuite.
Cela est très pratique lorsqu'on a des pieds de page en couleurs, et qu'on souhaite imprimer des brouillons plus rapidement et sans gâcher trop d'encre ou de toner.
Sub PiedDePageMasque()
' macro écrite par Geo
' Passer momentanément le Pied de Page en texte masqué.
'-- Entrer dans le pied de page
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
'-- Mettre le curseur en début de ligne
Selection.HomeKey Unit:=wdStory
'-- Sélectionner le pied de page
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
'-- Activer le mode texte caché
With Selection.Font
.Hidden = True
End With
'-- Revenir dans le document
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
'-- L'imprimer
ActiveDocument.PrintOut
'-- Remettre le pied de page en "mode visible"
'-- Voir plus haut pour les remarques.
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
Selection.HomeKey Unit:=wdStory
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
With Selection.Font
.Hidden = False
End With
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub
]]>
Je précise en passant que le surlignage ne fait pas partie de la mise en forme. Il s'agit juste d'une fonctionnalité permettant de «marquer» des éléments de texte.
Pour que ce surlignage ne soit pas imprimé, affichez les options (onglet Fichier => Options), puis cliquez sur Affichage. Dans les Options d'affichage de la page, décochez l'option Affichez les marques du surligneur.

Le surlignage va disparaître du document. Pour le remettre, recochez l'option.
]]>Cela dit, décocher cette option peut ne pas suffire car elle ne touche que les images avec habillage et les dessins avec habillage créés dans Word.
S'il y a des objets graphiques sans habillage dans le document, la meilleure solution est de mettre les graphiques en attribut caché et d'imprimer en décochant l'option "texte masqué" (toujours dans les Options d'Impression)
Pour mettre les images en attribut masqué, utilisez la fonction Recherche-Remplace :