XL 2019 Connaitre le numéro de page d'un doc word pour rapport à son titre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Jérémy26

XLDnaute Nouveau
Bonjour, j'ai une macro qui récupère tout mes titres d'un document Word, et j'aimerai en plus avoir la page du document Word pour mes titres est-possible ?
J'aimerai par la suite, si j'ai un objPara.Style = "Titre 1" à la page 2 du mon doc Word et un objPara.Style = "Titre 1" à la page 6, j'aimerai déterminer mes numéro de tableau qui sont dans ses pages.
Merci de votre aide.
 
Bonjour à tous, Bonjour @Jérémy26

Pour le N° de page peut-être en utilisant la propriété ".Information(wdActiveEndAdjustedPageNumber)" de l'objet Range.

Amicalement
Alain
Merci j'ai pu utiliser cette propriété pour déterminer la page de mes titres, le code ci joint. Mais je n'arrives pas à la faire fonctionner pour déterminer dans pages du document word se trouve mes tableaux.
VB:
                 If objPara.Style = "Titre 1" Then
                    lvnumPage = .Information(wdActiveEndAdjustedPageNumber)
                    ThisWorkbook.Sheets("Liste_tableaux").Range("M" & lvnbsolo).Value = lvnumPage
                    lvnbsolo = lvnbsolo + 1
                 End If
 
Pour savoir quel est la page word de mon tableau j'ai essayé ceci mais j'ai un message d'erreur dès la première ligne :
VB:
                        tab_lvnumPage = WordDoc.Tables(i).Information(wdActiveEndAdjustedPageNumber)
                        ThisWorkbook.Sheets("Liste_tableaux").Range("N" & tab_lvnbsolo).Value = tab_lvnumPage
                        tab_lvnbsolo = tab_lvnbsolo + 1
 
Re Euh

Voilà un exemple avec le Doc et le classeur joint,
Ouvre le Doc avant de lancer la macro
(On ne liste que les tableaux sur la même page qu'un Titre1)

Enrichi (BBcode):
Sub AnaTitre1()
     
     Dim WORDApp As Word.Application
     Dim WordDoc As Word.Document
     
     Dim Titl(), Tb(), i As Long, N°Page As Integer, N°Tb As Integer
     Dim Para As Paragraph, Tabl As Table
     
     Dim Dic As Object
     Set Dic = CreateObject("Scripting.Dictionary")
     
     On Error Resume Next
'A adapter
     Set WORDApp = GetObject(, "Word.Application")
     Set WordDoc = WORDApp.Documents("Doc Essai.docx")
     On Error GoTo 0
     If WordDoc Is Nothing Then Exit Sub
     
     i = 0
     For Each Para In WordDoc.Paragraphs
          If Para.Style = "Titre 1" Then
               N°Page = Para.Range.Information(wdActiveEndAdjustedPageNumber)
               i = i + 1: ReDim Preserve Titl(1 To 2, 1 To i): Titl(2, i) = N°Page: Titl(1, i) = Para.Range.Text
               Dic(N°Page) = Dic(N°Page) + 1
          End If
     Next
     i = 0
     N°Tb = 0
     For Each Tabl In WordDoc.Tables
          N°Tb = N°Tb + 1
          N°Page = Tabl.Range.Information(wdActiveEndAdjustedPageNumber)
          If Dic.Exists(N°Page) Then
               i = i + 1
               ReDim Preserve Tb(1 To 2, 1 To i)
               Tb(1, i) = N°Tb: Tb(2, i) = N°Page
          End If
     Next
     
     'Ecrire la liste des Titre1 et leur page
     Feuil1.[A2].Resize(UBound(Titl, 2), 2).Value = WorksheetFunction.Transpose(Titl)
     'Ecrire les N° de tableau et leur page
     Feuil1.[D2].Resize(UBound(Tb, 2), 2).Value = WorksheetFunction.Transpose(Tb)
     
     Set WordDoc = Nothing
     Set WORDApp = Nothing
     
End Sub

@Phil69970 a dit :
Selection.Information(wdActiveEndPageNumber)

La différence avec .Information(wdActiveEndAdjustedPageNumber)
C'est que la deuxième syntaxe prend en compte les modifications de N° de page effectuées par l'utilisateur (Commence à ..) la première non.


Amicalement
Alain
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour