Voir le flux RSS

Eric KERGRESSE

Recupérer le "titre" d'un tableau word dans excel

Noter ce billet
par , 16/12/2016 à 08h56 (905 Affichages)
Ce billet est issu du message recuperer-titre-d-tableau-word-excel


Dans le but d'automatiser le traitement d'un fichier word contenant des tableaux, je souhaiterais récupérer le "titre" de chaque tableau du document word dans excel via vba.
Pour l'instant je récupère les tableaux sans problèmes.
Le titre correspond à une phrase précédant le tableau, et c'est cette partie que je n'arrive pas à récupérer.
Depuis Word

Le code ci-dessous ne fonctionne sous cette forme que dans un document Word. Voir plus bas pour activer cette fonction depuis Excel.

A noter l'importance de la présence ou non de Extend dans MoveUp, HomeKey, EndKey, etc... Pour se positionner : ne pas utiliser Extend, pour sélectionner : l'utiliser.

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Function ContenuTitre(ByVal TableEnCours As Table) As String
 
         ContenuTitre = ""
         TableEnCours.Select
         Selection.MoveUp Unit:=wdLine, Count:=1
         With Selection
              .HomeKey Unit:=wdLine
              .EndKey Unit:=wdLine, Extend:=wdExtend
              ContenuTitre = .Range.Text
         End With
 
End Function

Et pour l'utiliser :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub TestContenuTitre()
 
Dim I As Integer
 
    With ActiveDocument
         For I = 1 To .Tables.Count
             MsgBox ContenuTitre(ActiveDocument.Tables(I))
         Next I
    End With
 
End Sub

Ce code a été réalisé à partir de la FAQ VBA Word faq/?page=VBA#vba_divers_selection, notamment le paragraphe développé par bidou.


Depuis Excel

Si le code est lancé directement depuis Excel, il faut ajouter la référence Microsoft Word et modifier le code ci-dessus :

Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function ContenuTitre(ByVal DocumentEnCours As Word.Document, ByVal TableEnCours As Word.Table) As String
 
Dim SelectionEnCours As Word.Selection
 
    With DocumentEnCours
         ContenuTitre = ""
         TableEnCours.Select
         Set SelectionEnCours = Word.Selection
         SelectionEnCours.MoveUp Unit:=wdLine, Count:=1
         With SelectionEnCours
              .HomeKey Unit:=wdLine
              .EndKey Unit:=wdLine, Extend:=wdExtend
              ContenuTitre = .Range.Text
         End With
         Set SelectionEnCours = Nothing
    End With
 
End Function

Autre possibilité :

Si vous avez la main sur le document Word, une solution assez simple serait de faire correspondre ces titres à des signets aux noms explicites. Ex: TitreTable1, ....
Ensuite, avec une variable Bookmark, il suffit de balayer la collection des signets du document et de récupérer leur contenu avec un ".range.text" suivant leur nom.

Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Viadeo Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Twitter Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Google Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Facebook Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Digg Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Delicious Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog MySpace Envoyer le billet « Recupérer le "titre" d'un tableau word dans excel » dans le blog Yahoo

Mis à jour 29/07/2018 à 17h55 par LittleWhite (Coloration du code)

Catégories
Programmation

Commentaires