IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Word

FAQ WordConsultez toutes les FAQ

Nombre d'auteurs : 20, nombre de questions : 289, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireChampsChamps VBA


La macro suivante va parcourir les signets (Bookmark) d'un document et les inscrire dans un nouveau document.

 
Sélectionnez
Public Sub listbookmark()
Dim stTableau As String
Dim bm As Bookmark
 
For Each bm In ActiveDocument.Bookmarks
stTableau = stTableau & vbCrLf & bm.Name
Debug.Print stTableau
Next bm
Application.Documents.Add
 
Selection.TypeText stTableau
 
 
 
End Sub
Créé le 25 avril 2007  par Lebeau Olivier


La macro ci-dessous vous permet de récupérer le code et la valeur des champs de votre document et de l'insérer dans un nouveau document

 
Sélectionnez
Public Sub listchamps()
Dim stTableau As String
Dim ch As Field
 
For Each ch In ActiveDocument.Fields
stTableau = stTableau & vbCrLf & ch.Code & " - " & ch.Result
Debug.Print stTableau
Next ch
Application.Documents.Add
 
Selection.TypeText stTableau
 
 
 
End Sub

On accède au texte d'un champ à l'aide de la propriété .Code et à son contenu avec la propriété .Result.

Mis à jour le 25 décembre 2012  par Lebeau Olivier

Lien : Les champs.

Nécessite d'activer la référence "Microsoft Word xx.x Object Library".

Ecrire un texte dans un champ personnalisé :

vba
Sélectionnez
'Fields(1) : premier champ du document Word %%%
WordDoc.Fields(1).Result.Text = "essai d'ecriture dans champ Word"

Lire le texte d'un champ personnalisé :

vba
Sélectionnez
'Fields(1) : premier champ du document Word
MsgBox WordDoc.Fields(1).Result.Text
Créé le 22 octobre 2006  par SilkyRoad

On utilise la méthode Add de la collection TableOfContents Set objDoc = Application.Documents.Open("D:\tuto.doc")

 
Sélectionnez
objDoc.TablesOfContents.Add _
    Range:=objDoc.Range(objDoc.Paragraphs(2).Range.Start, objDoc.Paragraphs(2).Range.Start), _
    UseHeadingStyles:=True, _
    LowerHeadingLevel:=4, _
    UpperHeadingLevel:=1

Faite très attention à ne pas sélectionner de texte car celui-ci serait écrasé.

Créé le 4 février 2004  par bidou

On appelle la méthode collapse de la sélection avant l'insertion

 
Sélectionnez
selection.Collapse Direction:=wdCollapseEnd
With ActiveDocument.Bookmarks
    .Add Range:=Selection.Range, Name:="Nom"
    .DefaultSorting = wdSortByName
    .ShowHidden = True
End With
Créé le 5 février 2004  par bidou

Il y a toujours destruction d'un signet portant sur une plage. Le signet fait partie de la plage.

 
Sélectionnez
Dim objRange As Range
Set objRange = ActiveDocument.Bookmarks.Item("genre").Range
objRange.Text = "madame"

Le signet 'genre' est détruit dans cette opération. Il faut toujours recréer le signet après, du style

 
Sélectionnez
ActiveDocument.Bookmarks("genre").Range.Select
Selection.Text = "Madame"
objRange.Bookmarks.Add "genre"

Pour éviter cela, il vaut mieux utiliser des signets d'insertion (défini sur un point)

Créé le 5 février 2004  par bidou

Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous permet d'exporter les valeurs des cellules A1 à A3 vers des signets d'un document Word nommé "monfichier.doc"
Les signets positionnés aux endroits de votre choix doivent être nommés "Signet1 , Signet2 et Signet3

 
Sélectionnez
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte
 
    Set WordApp = CreateObject("word.application")    'ouvre une session Word
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouvre le document Word
    WordApp.Visible = False    'Word est masqué pendant l'opération
 
    For i = 1 To 3
        'les signets du document Word sont nommés Signet1 , Signet2 , Signet3
        WordDoc.Bookmarks("Signet" & i).Range.Text = Cells(i, 1)
    Next i
 
    WordApp.Visible = True    'affiche le document Word
    'WordDoc.PrintOut 'Pour imprimer le doc obtenu
 
    'WordDoc.Close True 'ferme le document word en sauvegardant les données
    'WordApp.Quit 'ferme la session Word
Créé le 22 octobre 2006  par SilkyRoad

On utilise la méthode Add de la collection Hyperlinks

 
Sélectionnez
Dim objDoc As Document
 
Set objDoc = Application.Documents.Open("D:\tuto.doc")
objDoc.Hyperlinks.Add objDoc.Paragraphs(1).Range.Words(objDoc.Paragraphs(1).Range.Words.Count), "d:\pilo.doc"
Créé le 4 février 2004  par bidou

Le code qui suit vous permet d'afficher et d'imprimer la liste des hyperliens contenus dans un document avec leur adresse.

 
Sélectionnez
Public Sub listehyperliens()
Dim stTableau As String
Dim ch As Field
 
For Each ch In ActiveDocument.Fields
If ch.Type = wdFieldHyperlink Then
stTableau = stTableau & vbCrLf & ch.Result & " - " & ch.Code
Debug.Print stTableau
End If
 
Next ch
 
ActiveDocument.Content.InsertBreak Type:=wdPageBreak
Selection.InsertParagraph
 
Selection.TypeText stTableau
 
 
 
End Sub
Créé le 25 avril 2007  par Lebeau Olivier

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.