Writer et macro

Bonjour

Quel document de référence puis-je lire (site, livre ou autre), qui me permettrait de bien comprendre comment je peux atteindre un objet dans un document texte avec une macro.

Je cherche à mettre en œuvre une macro qui modifierai une image en fonction du contenu d'un champs les deux étant situés dans l'entête de page.

A ce stade je butte sur la syntaxe qui me permet de lire ce champs dans l'arborescence du document.

Merci par avance.

M. BILLARD

bonjour,

perso, j'ai le bouquin :
https://www.eyrolles.com/Informatique/Livre/programmation-openoffice-org-2-9782212117639/

et j'utilise aussi le document de pytoniak :
https://www.pitonyak.org/OOME_3_0.pdf

et si tu t'en sors tjrs pas, reviens sur la liste avec un exemple bien
précis, on saura surement t'aider :wink:

Yves.

Bonsoir,

Je bidouille avec les objets avec des fois des résultats surprenant car il ne trouve pas l'objet recherché bien que contenu dans le document j'ai des cas ou je fais plusieurs itérations pour être sur de trouver l'objet, mais mes documents traité son lourd.

deux bouts de code et on peut voir mes errances

ma bible  programmation OpenOffice de Marcelly et Godard

et bien sûr la fonction Xray pour décortiquer se que l'on manipule

cordialement

Jean-Luc

REM  *****  BASIC  *****

rem **** copie locale ****
rem CodeAnnexeB-02.sxw   bibli : Images Module1
Option Explicit

Sub resizeImageByWidth(uneImage As Object, largeur As Long)
 Dim leBitMap As Object, Proportion As Double
 Dim Taille1 As New com.sun.star.awt.Size

LeBitmap = uneImage.GraphicObjectFillBitmap
 Taille1 = LeBitMap.Size ' taille en pixels !
 Proportion = Taille1.Height / Taille1.Width
 Taille1.Width = largeur ' largeur en 1/100 de mm
 Taille1.Height = Taille1.Width * Proportion
 uneImage.Size = Taille1
End Sub

Function FindObjectByName(unePage As Object,nomObj As String, Optional service As String, Optional LieuDAppelFOBN As String) As Object  ' 2  -----------  2
  '  com.sun.star.table.XTableCharts com.sun.star.drawing.OLE2Shape
 Dim objX, SousObjectFOBN, unePageFOBN, oObjetBrouillonFOBN, oObjetTrouverFOBN As Object
 Dim NomProvisoireFOBN, NomObjetFOB, ListeDesObjectsFOBN As String
 Dim jFOBN, iFOBN, CompteurFOBN, CompteurDepartFOBN, CompteurFinalFOBN, x, y As Long
 unePageFOBN = unePage
 ' NomProvisoireFOBN = unePageFOBN.Name
 ListeDesObjectsFOBN="Nbre object dans page initiale " & unePageFOBN.Count & " | Object à trouver " & nomObj & " | "
 y=0
 If nomObj="" Then
   Print ("erreur le nom de l'object est vide " & nomObj)
 End If
 CompteurDepartFOBN = unePageFOBN.Count
 CompteurFinalFOBN = -1
 jFOBN=0
 Do While IsEmpty (oObjetTrouverFOBN)  Or IsNull(oObjetTrouverFOBN) ' CompteurDepartFOBN <> CompteurFinalFOBN
  If jFOBN > 1 Then
    Print("Information : FindObjectByName ligne 81 PB sur la recherche d'objet nombre itération " & jFOBN & " pour l'objet " & nomObj &" " &  LieuDAppelFOBN)
  End If
  For x = 0 To unePageFOBN.Count - 1
   objX = unePageFOBN(x)
   ' Object                                 | supportsService              | Count
   ' com.sun.star.comp.sc.ScShapeObj"      | com.sun.star.drawing.OLE2Shape       |  non
   ' SwXTextGraphicObject                   | com.sun.star.text.TextGraphicObject  |  non
   ' SwXTextTable                           | com.sun.star.text.TextTable          |  non
   ' com.sun.star.drawing.XDrawPage         | com.sun.star.drawing.GenericDrawPage |  oui

'   'com.sun.star.drawing.RotationDescriptor 'com.sun.star.drawing.ShadowProperties 'com.sun.star.drawing.Shape 'com.sun.star.drawing.Text
      'com.sun.star.drawing.TextProperties , 'com.sun.star.sheet.Shape com.sun.star.drawing.XDrawPage

If objX.supportsService("com.sun.star.text.TextTable") or objX.supportsService("com.sun.star.text.TextGraphicObject") or objX.supportsService( "com.sun.star.drawing.OLE2Shape")_
    Then ' or objX.supportsService("com.sun.star.text.TextGraphicObject") Then ' or True
     CompteurFOBN = 0 ' com.sun.star.comp.sc.ScShapeObj
     SousObjectFOBN = objX
    ElseIf objX.supportsService("com.sun.star.drawing.GenericDrawPage") Then
     CompteurFOBN = objX.Count - 1
     ListeDesObjectsFOBN= ListeDesObjectsFOBN & " | Nbre d'object dans page | " & objX.Count
     SousObjectFOBN = objX(0)
     Print ("objet multiple "  & CompteurFOBN)
     Xray SousObjectFOBN
    Else
     CompteurFOBN = 0
     Print ("noter le service et vérifier si il y a Count")
     Xray objX
   End If
   For iFOBN = 0 To CompteurFOBN
    y=y+1
    NomObjetFOB = SousObjectFOBN.Name
    ListeDesObjectsFOBN= ListeDesObjectsFOBN &" | " & x & " | " &  NomObjetFOB
    If SousObjectFOBN.Name = nomObj Then
      If IsMissing(service) then
        oObjetTrouverFOBN = SousObjectFOBN ' objet trouvé
        Print (" Name ? et copier un service")
        Xray  SousObjectFOBN 'com.sun.star.sheet.SpreadsheetDrawPage
        Print("Stop")
        ListeDesObjectsFOBN= ListeDesObjectsFOBN & " | Objet Trouvé a | " & SousObjectFOBN.Name
        'jFOBN = 1
          CompteurFinalFOBN = unePageFOBN.Count
        CompteurDepartFOBN = CompteurFinalFOBN
        x = unePageFOBN.Count - 1
       Else
        If SousObjectFOBN.supportsService(service) then
          oObjetTrouverFOBN = SousObjectFOBN ' objet trouvé
          ListeDesObjectsFOBN= ListeDesObjectsFOBN & " | Objet Trouvé b

" & SousObjectFOBN.Name

'jFOBN=1
            CompteurFinalFOBN = unePageFOBN.Count
          CompteurDepartFOBN = CompteurFinalFOBN
          x = unePageFOBN.Count - 1
        End If
      End If
    End If
    SousObjectFOBN = objX(iFOBN)
    If iFOBN <> 0 or IsEmpty (SousObjectFOBN)  Or IsNull(SousObjectFOBN) Then
      Print ("objet multiple suite "  & CompteurFOBN)
      Xray SousObjectFOBN
      Xray objX
    End If
   Next iFOBN
  Next x
  jFOBN = jFOBN+1
  If  nomObj="erreur" Then
    Print("regarder les Count")
    'Xray unePageFOBN
    CompteurFinalFOBN = unePageFOBN.Count
    print("Les compteurs intermédiaire " & CompteurDepartFOBN & " page " & unePageFOBN.Count & " final " & CompteurFinalFOBN)
    Xray unePageFOBN
   Else
    oObjetBrouillonFOBN = unePageFOBN
    CompteurFinalFOBN = unePageFOBN.Count
  End If
  If  CompteurDepartFOBN <> CompteurFinalFOBN Or unePageFOBN.Count <> CompteurFinalFOBN Or (( IsEmpty (oObjetTrouverFOBN)  Or IsNull(oObjetTrouverFOBN)) And jFOBN<3) Then
     'print("Les compteurs final " & CompteurDepartFOBN & " page " & unePageFOBN.Count & " final " & CompteurFinalFOBN)
     'Print("Liste des objects " & ListeDesObjectsFOBN)
     CompteurFinalFOBN = unePageFOBN.Count
  End If
 Loop
 If IsEmpty (oObjetTrouverFOBN)  Or IsNull(oObjetTrouverFOBN) Then    ' nomObj="EP214" Or nomObj="CO048"
   Print("Object n'est pas trouvé, Liste des objects " & ListeDesObjectsFOBN)
   print("Les compteurs " & CompteurDepartFOBN & " " & unePageFOBN.Count & CompteurFinalFOBN)
   'Xray SousObjectFOBN
   Xray objX
   Xray unePageFOBN
  Else
  FindObjectByName = oObjetTrouverFOBN

End If

End Function ' renvoie Null en cas d'échec FindObjectByName 2 -----------------------------------------------------   2

Bonjour

Merci pour la documentation je vais y jeter un coup d’œil puis je reviens sur la liste avec les questions.

Bon week-end

François-Marie