Sub test()
Dim l_o_rng As Word.Range
Dim l_s_pageText As String
For Each l_o_rng In GetDocPages(ActiveDocument)
'récupérer et nettoyer le texte de la page
l_s_pageText = l_o_rng.Text
l_s_pageText = Replace(l_s_pageText, vbCr, vbNullString) 'supprimer les retours à la ligne
l_s_pageText = Replace(l_s_pageText, Strings.Chr(12), vbNullString) 'supprimer les saut de pages
'supprimer la page s'il n'y a pas de texte
If Trim(l_s_pageText) Like vbNullString Then l_o_rng.Delete
Next l_o_rng
End Sub
'extrait les ranges de chaque page d'un document dans une Collection
Private Function GetDocPages(p_o_doc As Word.Document) As VBA.Collection
Dim l_l_iPage As Long
Dim l_o_collStartPages As VBA.Collection
Set l_o_collStartPages = New VBA.Collection
For l_l_iPage = 1 To p_o_doc.ActiveWindow.ActivePane.Pages.Count
l_o_collStartPages.Add p_o_doc.GoTo(wdGoToPage, wdGoToAbsolute, l_l_iPage).Start
Next l_l_iPage
Set GetDocPages = New VBA.Collection
For l_l_iPage = 2 To l_o_collStartPages.Count
GetDocPages.Add p_o_doc.Range(l_o_collStartPages(l_l_iPage - 1), l_o_collStartPages(l_l_iPage))
Next l_l_iPage
GetDocPages.Add p_o_doc.Range(l_o_collStartPages(l_o_collStartPages.Count), p_o_doc.Range.End)
Set l_o_collStartPages = Nothing
End Function