Numéroter automatiquement les paragraphes d'un document LibreOffice

Avec un curseur

La solution ci-dessous consiste simplement à ajouter au style "Standard" le style de liste "Numérotation 1".
On pourra ensuite modifier le style "Numérotation 1" pour améliorer le rendu, si on le souhaite.
Le programme saute les paragraphes vides.

Option Explicit
Sub NumeroterParagraphesCurseur
	Dim monDocument As Object
	Dim monCurseur As Object
	monDocument = ThisComponent
	monCurseur = monDocument.Text.createTextCursor
	Do
		monCurseur.gotoEndOfParagraph(True)
		If Len(monCurseur.String) > 0 Then
			If monCurseur.ParaStyleName = "Standard" Then
				monCurseur.NumberingStyleName = "Numbering 1"
			End If
		End If
	Loop While monCurseur.gotoNextParagraph(False)
End Sub

On utilise un curseur qui sélectionne chaque paragraphe (pour avoir la longueur du paragraphe), qui teste le nom du style du paragraphe et qui passe au paragraphe suivant si c'est possible (la fonction monCurseur.gotoNextParagraph(False) renvoie un booléen).

Avec une énumération

Avec une énumération, on vérifie que chaque élément est un objet Paragraph (méthode supportsService).
Comme l'énumération renvoie un objet TextRange, qui lui-même supporte l'interface XTextRange, on a la méthode getString qui permet ensuite de calculer la longueur du paragraphe.

Option Explicit
Sub NumeroterParagraphesEnumeration
	Dim monDocument As Object
	Dim chaqueParag As Object
	Dim enum As Object
	monDocument = ThisComponent
	enum = monDocument.Text.createEnumeration
	While Enum.hasMoreElements
		chaqueParag = Enum.nextElement
		If chaqueParag.supportsService("com.sun.star.text.Paragraph") Then
			If chaqueParag.ParaStyleName = "Standard" Then
				If chaqueParag.getString > 0 Then
					chaqueParag.NumberingStyleName = "Numbering 1"
				End If
			End If
		End If
	Wend
End Sub