bonsoir,
j'avais entendu dire qu'il n'y a pas de notion de page en vba word. A ma grande surprise j'ai trouvé un programme qui traite des pages word.
j'ai un peu bricolé le code, mon but étant de tester si une page est vide au sens vide de texte "normal", en dehors des retours à la ligne, de la numérotation et tous autres textes de gestion.
ça se passe dans Item(NoLine).Range.Text ou je ne sais pas reconnaître si le texte est "normal". c'est surement une propriété à tester mais laquelle ?
merci de votre aide.
Code : 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 Function test_page_vide() Dim oPages As Pages Dim NoPage As Long Dim oRects As Rectangles Dim NoRect As Long Dim oLines As Lines Dim NoLine As Long With ActiveDocument.ActiveWindow.Panes(1) Set oPages = .Pages With oPages For NoPage = 1 To .Count 'MsgBox ("Page " & NoPage & " : ") 'Debug.Print "Page " & NoPage & " : "; With .Item(NoPage) Set oRects = .Rectangles With oRects For NoRect = 1 To .Count 'MsgBox ("Page " & NoPage & " ; " & "Rectangle " & NoRect & " ; ") Debug.Print , "Rectangle " & NoRect & " : "; With .Item(NoRect) Select Case .RectangleType Case WdRectangleType.wdLineBetweenColumnRectangle Debug.Print "ligne qui sépare des colonnes" Case WdRectangleType.wdMarkupRectangle Debug.Print "bulle de commentaires" Case WdRectangleType.wdMarkupRectangleButton Debug.Print "indicateur (...) dans bulle de commentaires quand existe texte supplémentaire dans commentaire" Case WdRectangleType.wdPageBorderRectangle Debug.Print "bordure de page" Case WdRectangleType.wdSelection Debug.Print "espace occupé par un outil de sélection" Case WdRectangleType.wdShapeRectangle Debug.Print "espace occupé par une forme" Case WdRectangleType.wdSystem Debug.Print "(système) réservé" Case WdRectangleType.wdTextRectangle 'MsgBox ("Page " & NoPage & " ; " & "Rectangle " & NoRect & " ; texte") Set oLines = .Lines With oLines Debug.Print "espace occupé par du texte : " & .Count & " lignes :" 'MsgBox ("nbre lignes texte = " & oLines.Count) If .Count = 0 Then 'MsgBox ("Page " & NoPage & " ; " & "Rectangle " & NoRect & " ; page vide de texte") End If For NoLine = 1 To .Count MsgBox .Item(NoLine).Type MsgBox ("Page " & NoPage & " ; " & _ "Rectangle " & NoRect & _ " ; texte" & _ "Ligne " & NoLine & " : " & .Item(NoLine).Range.Text) 'Debug.Print , , "Ligne " & NoLine & " : " & Len(.Item(NoLine).Range.Text) & " caractère(s)" Next NoLine End With End Select End With Next NoRect End With End With Next NoPage End With End With End Function
Partager