Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
La modération vous a écrit: Titre modifié : oShape.supportsService error
Veillez à utiliser des termes en français afin que la recherche soit efficace.
Sub RedimensionnerImagesSurPage
Dim oDoc As Object
Dim oSlides As Object
Dim oSlide As Object
Dim oShape As Object
Dim nouvelleLargeur As Long
nouvelleLargeur = 5510 ’ Largeur définie à 5.51 cm (en 1/100 mm)
oDoc = ThisComponent
oSlides = oDoc.getDrawPages()
pageIndex = 0 ’ Remplacez par l’index de la page souhaitée (première page = 0, deuxième page = 1, etc.)
oSlide = oSlides.getByIndex(pageIndex)
For j = 0 To oSlide.getCount() - 1
oShape = oSlide.getByIndex(j)
If oShape.supportsService(“com.sun.star.drawing.GraphicObjectShape”) Then
ratio = CDbl(nouvelleLargeur) / oShape.Size.Width
oShape.Size = CreateUnoStruct(“com.sun.star.awt.Size”, nouvelleLargeur, CLng(oShape.Size.Height * ratio))
End If
Next j
MsgBox “Les images de la page sélectionnée ont été redimensionnées.”
End Sub
la macro fonctionnait avant (je ne me souviens plus de la version de LO), mais maintenant elle ne fonctionne plus.
J'ai une erreur au niveau du : If oShape.supportsService(“com.sun.star.drawing.GraphicObjectShape”)
Merci pour votre aide
Dernière modification par ludovic77 le 08 janv. 2024 13:02, modifié 4 fois.
Version: 7.6.4.1 (X86_64) / LibreOffice Community
Build ID: e19e193f88cd6c0525a17fb7a176ed8e6a3e2aa1
CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3
Locale: fr-FR (fr_FR.UTF-8); UI: fr-FR
Calc: threaded
Hello,
1 - il n' y a pas de macro dans ton document
2 - si on copie colle le code du premier message dans un nouveau module, il y a des erreurs car les apostrophes et les guillemets ne sont pas bons.
3 - pour changer la taille d'un objet "Shape" il faut utiliser setSize
4 - je n'ai pas d'erreur sur la fonction supportsService avec ton document ( avec LibreOffice 7.6.2.1) avec ce code :
Sub RedimensionnerImagesSurPage
Dim oDoc As Object, oSlides As Object, oSlide As Object, oShape As Object
Dim pageIndex As Integer, j as Integer
Dim nouvelleLargeur As Long, ratio As Double, NewSize As Object
nouvelleLargeur = 5510 ' Largeur définie à 5.51 cm (en 1/100 mm)
oDoc = ThisComponent
oSlides = oDoc.getDrawPages()
pageIndex = 0 'Remplacez par l’index de la page souhaitée (première page = 0, deuxième page = 1, etc.)
oSlide = oSlides.getByIndex(pageIndex)
For j = 0 To oSlide.getCount() - 1
oShape = oSlide.getByIndex(j)
If oShape.supportsService("com.sun.star.drawing.GraphicObjectShape") Then
ratio = CDbl(nouvelleLargeur) / oShape.Size.Width
NewSize = CreateUnoStruct("com.sun.star.awt.Size")
NewSize.Width = nouvelleLargeur
NewSize.Height = CLng(oShape.Size.Height * ratio)
oShape.SetSize(NewSize)
End If
Next j
MsgBox "Les images de la page sélectionnée ont été redimensionnées."
End Sub
Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Jurassic Pork a écrit : ↑05 janv. 2024 06:41
il y a des erreurs car les apostrophes et les guillemets ne sont pas bons
Tu vois bien dans l'EDI que les chaînes ne sont pas colorisées comme elles devraient l'être.
Le 2e document que tu fournis a les mêmes erreurs.
ludovic77 a écrit : ↑04 janv. 2024 19:58
J'ai suivi le tuto pour Xray, il ne fonctionne pas.
Etonnant, merci de détailler ce que tu as fait car "ne fonctionne pas" n'aide en rien à comprendre.
Le fait que tu n'arrives pas à lancer XRay démontre qu'il y a sans doute un dysfonctionnement de ta configuration.