Date: prev next · Thread: first prev next last
2021 Archives by date, by thread · List index


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


Le 16/06/2021 à 18:10, Billard François-Marie a écrit :
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




--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.