Table des matières : macro récupérer un champ précis

pitai

XLDnaute Nouveau
Bonjour tout le monde,

J'ai un document Word avec une table de matières, et j'aimerais créer une macro sous Excel qui parcourt tous les champs de cette table de matières pour ne prendre que ceux qui commencent par : "Liste".

J'ai trouvé ce code qui permet de récupérer la table de matière entière, mais je n'arrive pas à récupérer les différents champs à partir de ce bout de code. Comment faire ?

Code:
wordDoc.TablesOfContents(1).Range.Text

Je vous remercie d'avance
 

pitai

XLDnaute Nouveau
Re : Table des matières : macro récupérer un champ précis

Merci tototiti2008, ça marche nickel.

J'ai une petite question par rapport à votre code concernant l'objet Fields. Peut-on accéder aux différentes arborescences avec cet objet?

Je m'explique :
1. Partie
1.1 sous-partie
1.1.1 sous-sous partie : Liste ...

Une fois que je récupère le champ de ma sous-sous-partie : "Liste ..." dans une colonne, j'aimerais l'associer à dans d'autres colonnes qui contiendraient la partie et la sous-partie correspondante. Est-ce possible ?

Encore merci pour votre réponse rapide
 

tototiti2008

XLDnaute Barbatruc
Re : Table des matières : macro récupérer un champ précis

Re,

un peu tordu, mais bon...

Code:
Sub aaa()
Dim TDM, fld As Field, TM1 As String, TM2 As String
Set TDM = wordDoc.TablesOfContents(1)
For Each fld In TDM.Range.Fields
    If fld.Type = wdFieldHyperlink Then
        If fld.Result.Style = "TM 1" Then
            TM1 = fld.Result.Text
        ElseIf fld.Result.Style = "TM 2" Then
            TM2 = fld.Result.Text
        End If
        If fld.Result.Text Like "*Liste*" Then
             MsgBox fld.Result.Text & "//" & TM1 & "//" & TM2
        End If
    End If
Next
End Sub
 
Dernière édition:

pitai

XLDnaute Nouveau
Re : Table des matières : macro récupérer un champ précis

Merci beaucoup tototiti2008. Je pense pouvoir adapter tout seul le code que vous m'avez fourni.

Par contre il y a un détail qui me semblait anodin mais qui a son importance. Il y a des espaces et des chiffres parasites qui s'intègrent avant et après le titre du champ.

Exemple :
1 Extension12

De plus, le nombre d'espaces n'étant pas fixe, il est impossible d'automatiser l'extraction du titre du champ avec Mid. Avez-vous la même chose ? Est-il possible d'extraire strictement le titre du champ sans les numérotations ?

Je mets en pièce jointe une image du sommaire tel quel.
Merci encore TableOfContents.png
 

tototiti2008

XLDnaute Barbatruc
Re : Table des matières : macro récupérer un champ précis

Re,

Après le titre du champ, ce sont les numéros de pages
Avant c'est la numérotation appliquée, normalement
et ils ne sont pas séparés par des espaces mais par des tabulations
un Split(Texte,chr(9)) devrait séparer les informations
 

pitai

XLDnaute Nouveau
Re : Table des matières : macro récupérer un champ précis

Re,

J'ai testé avec

Code:
Split(wdDoc.TablesOfContents(1).Range.Fields(12).Result.Text, Chr(9))
, mais cela n'extrait que la numérotation du champ car le champ se présente de la manière suivante :

numérotation, tabulation horizontale, titre du champ, tabulation horizontale, numéro de page.

Peut-on extraire la chaîne à partir du premier Chr(9) ?
 

tototiti2008

XLDnaute Barbatruc
Re : Table des matières : macro récupérer un champ précis

Re,

La fonction Split renvoie un tableau
ici, ce devrait être un tableau de 3 "cases"
la première avec la numérotation
la seconde avec le titre
la 3ème avec le numéro de page

essaye donc

Code:
msgbox Split(wdDoc.TablesOfContents(1).Range.Fields(12).Result.Text, Chr(9))(1)
 

Discussions similaires

Réponses
6
Affichages
319

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 206
dernier inscrit
diambote