Option Explicit
Sub ParcourirParagraphes()
' Déclaration des variables (Boucle)
Dim wdDoc As Document
Dim wdParagraphe As Paragraph
Set wdDoc = ActiveDocument
' Déclaration des variables (Ligne Par Ligne)
Dim wdNbLignesParagph As Integer
Dim wdLigneIndex As Byte ' Index de la ligne dans le paragraphe
Dim wdtexteLigne As String ' Texte de la ligne sélectionnée
' Déclaration des variables (Tableau)
Dim wdTbl As Table
Dim wdCel As Cell
' Déplacer la sélection au début du document
Selection.HomeKey wdStory
' Parcourir chaque paragraphe dans le document actif
For Each wdParagraphe In wdDoc.Paragraphs
' Vérifier si le paragraphe n'est pas vide
If Len(wdParagraphe.Range.Text) > 1 Then
' Sélectionner le paragraphe
wdParagraphe.Range.Select
' Calculer le nombre de lignes dans le paragraphe
wdNbLignesParagph = wdParagraphe.Range.ComputeStatistics(wdStatisticLines)
' Test si le Paragraphes est (une ou un ensembles de lignes) OU (Un tableau)
If wdParagraphe.Range.Information(wdWithInTable) Then
' Vérifier si la cellule n'est pas dans un tableau
If wdParagraphe.Range.Cells.Count > 0 Then
'Debug.Print "Ce paragraphe est dans un tableau."
'wdParagraphe.Range.Select
Set wdTbl = wdParagraphe.Range.Tables.Item(1)
Set wdCel = wdParagraphe.Range.Cells(1)
' Vérifier si la cellule est la premiére cellule du tableau
If wdCel.RowIndex = 1 And wdCel.ColumnIndex = 1 Then
wdTbl.Select
Debug.Print wdTbl.Cell(wdCel.RowIndex, wdCel.ColumnIndex).Range.Text
Else
'Debug.Print "La cellule sélectionnée n'est pas la cellule ligne 1 colonne 1"
'Debug.Print "La cellule sélectionnée est la cellule ligne " & wdCel.RowIndex & " de la colonne " & wdCel.ColumnIndex
wdTbl.Select
Debug.Print wdTbl.Cell(wdCel.RowIndex, wdCel.ColumnIndex).Range.Text
End If
End If
Else
'wdParagraphe.Range.Select
'Debug.Print "Ce paragraphe n'est pas dans un tableau."
' Si le paragraphe a une seule ligne
If wdNbLignesParagph = 1 Then
' Déplacer la sélection au début de la ligne
Selection.MoveLeft wdCharacter, 1
' Étendre la sélection jusqu'à la fin de la ligne et récupérer le texte
Selection.EndKey wdLine, wdExtend
wdtexteLigne = Selection.Text
' Afficher le texte de la ligne dans la fenêtre de débogage
Debug.Print wdtexteLigne
Else
' Si le paragraphe contient plusieurs lignes
' Parcourir chaque ligne dans le paragraphe
For wdLigneIndex = 1 To wdNbLignesParagph
' Sélectionner la ligne
' Si c'est la première ligne, déplacer la sélection au début de la ligne
If wdLigneIndex = 1 Then
Selection.MoveLeft wdCharacter, 1
End If
' Étendre la sélection jusqu'à la fin de la ligne
Selection.EndKey wdLine, wdExtend
' Récupérer le texte de la ligne sélectionnée
wdtexteLigne = Selection.Text
' Afficher le texte de la ligne dans la fenêtre de débogage
Debug.Print wdtexteLigne
' Si ce n'est pas la dernière ligne, déplacer la sélection à la ligne suivante
If wdLigneIndex <> wdNbLignesParagph Then
Selection.MoveRight wdCharacter, 1
End If
Next wdLigneIndex
End If
End If
End If
Next wdParagraphe
End Sub