Bonjour
A tester
J'ai simplifié le formatage du document Writer en utilisant un modèle;
Le fichier modèle (.ott) doit être dans le même répertoire que le fichier Calc.
Code : Tout sélectionner
Option Explicit
Sub Main
Dim maFeuille as Object, oCurseur as Object, docWriter as Object, monTexte as Object
Dim monCurseur as Object, maTable as Object, maZone as Object
Dim oLigne as Long, adresseDoc as Variant, oTitre as Variant, i as Integer, oFormats, x as Integer
Dim aLocale As New com.sun.star.lang.Locale
maFeuille = thisComponent.CurrentController.ActiveSheet
oCurseur = maFeuille.createCursor
oCurseur.gotoEndOfUsedArea(False)
oLigne = oCurseur.RangeAddress.EndRow
adresseDoc = Split(thisComponent.URL,"/")
adresseDoc(UBound(adresseDoc())) = ""
adresseDoc = join(adresseDoc, "/")
docWriter = StarDesktop.loadComponentFromURL(ConvertToURL(adresseDoc & "Prevision.ott"), "_default", 0, Array() )
monTexte = docWriter.Text
monCurseur = monTexte.createTextCursor
monTexte.insertString(monCurseur, maFeuille.Name, False)
monCurseur.gotoEnd(False)
maTable = docWriter.createInstance("com.sun.star.text.TextTable")
maTable.initialize(oLigne,5)
monTexte.insertTextContent(monCurseur, maTable, false)
oTitre = Array("Dates","Horaires","Lieux","Unités concernées","Formateurs")
For i = 0 To UBound(oTitre)
maTable.getCellByPosition(i,0).String = oTitre(i)
Next i
oFormats = docWriter.NumberFormats
maZone = maFeuille.getCellRangeByPosition(0,2,0,oLigne)
For i = 1 To maTable.Rows.Count - 1
maTable.getCellByPosition(0,i).NumberFormat = oFormats.getStandardFormat(com.sun.star.util.NumberFormat.DATE, aLocale)
maTable.getCellByPosition(0,i).Value = maZone.getCellByPosition(0,x).Value
x = x + 1
Next i
x = 0
maZone = maFeuille.getCellRangeByPosition(2,2,2,oLigne)
For i = 1 To maTable.Rows.Count - 1
If maZone.getCellByPosition(0,x).String <> "DISPONIBLE" Then
maTable.getCellByPosition(3,i).String = maZone.getCellByPosition(0,x).String
End If
x = x + 1
Next i
End Sub
Le principe est toujours le même, la macro crée le document Writer avec les données de la feuille en cours dans le document Calc.
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.