[Résolu][Writer] Modification de l'ancrage d'objets

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: 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 !
jaccomard
Fraîchement OOthentifié
Messages : 5
Inscription : 24 oct. 2018 07:36

[Résolu][Writer] Modification de l'ancrage d'objets

Message par jaccomard »


La modération vous a écrit: Vous postez en section Macros et API. Les termes par macro sont implicites, donc inutiles. Nous les avons supprimés

.
Bonjour à tous,

Je cherche, par macro, à modifier l'ancrage des images et autres shapes (le but est de remodifier en série des documents très longs).
Quand je lance ce code, j'obtiens un plantage de libreoffice : il ferme brutalement.

Code : Tout sélectionner

		
		mesPages=doc4.DrawPage
		pgcnt=mesPages.Count
 		for i=0 to pgcnt-1
			maPage=doc4.DrawPage(i)
			'msgbox("Drawpage n°"+str(i)+" : "+maPage.ImplementationName)
			if maPage.ImplementationName="SwXShape" then
				'xRay maPage
				if maPage.ShapeType="com.sun.star.drawing.GroupShape" then
					j=0
					while not trouve and j<maPage.Count-1
						uneforme=maPage(j)
						uneforme.AnchorType=1
						j=j+1
					wend
				end if
			end if
		next i 			
Quelqu'un a-t-il tenter ce genre de chose (j'ai fouillé dans le forum, mais pas trouvé) ?
Ou quelqu'un comprend où j'ai commis une erreur ?

Merci d'avance.
O.J.
Dernière modification par micmac le 25 oct. 2018 06:18, modifié 1 fois.
Raison : Balisage
LibreOffice 7.6, Debian 11
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer] Modification de l'ancrage d'objets

Message par Hubert Lambert »

Bonjour,

A priori, il n'y a aucune raison qui justifierait un plantage, mais c'est difficile à dire à partir d'un bout de code incomplet. Que fait en particulier ta routine "trouve" ?
Pour être aidé efficacement, fournis-nous un document de test qui reproduit le problème.
Cordialement.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
jaccomard
Fraîchement OOthentifié
Messages : 5
Inscription : 24 oct. 2018 07:36

Re: [Writer] Modification de l'ancrage d'objets

Message par jaccomard »

Re-bonjour,
Merci pour le coup de main, déjà.
Voici, en pièce jointe, le document sur lequel je fais l'essai.
"trouve" était un résidu inutile ici, laissé par erreur. Je l'ai enlevé, mais cela ne change rien pour l'erreur.
doc4 est le document courant.

Code : Tout sélectionner

		
        mesPages=doc4.DrawPage
	pgcnt=mesPages.Count
 	for i=0 to pgcnt-1
		maPage=doc4.DrawPage(i)
		if maPage.ImplementationName="SwXShape" then
			if maPage.ShapeType="com.sun.star.drawing.GroupShape" then
				j=0
				while j<maPage.Count-1
					uneforme=maPage(j)
					uneforme.AnchorType=1
					j=j+1
				wend
			end if
		end if
	next i 			
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6, Debian 11
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer] Modification de l'ancrage d'objets

Message par Hubert Lambert »

Apparemment, LibreOffice n'aime pas trop que l'on touche directement à l'ancrage de formes groupées.
Ne suffirait-il pas de modifier l'ancrage du groupe lui-même ? :

Code : Tout sélectionner

      if maPage.ImplementationName="SwXShape" then
         if maPage.ShapeType="com.sun.star.drawing.GroupShape" then
         	maPage.AnchorType=1
         end if
      end if
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
jaccomard
Fraîchement OOthentifié
Messages : 5
Inscription : 24 oct. 2018 07:36

Re: [Writer] Modification de l'ancrage d'objets

Message par jaccomard »

Bonjour,
J'ai essayé, et j'ai le même plantage. Mais peut être ne l'avez-vous pas, vous ? Si vous n'avez pas de plantage, c'est que ça vient d'autre chose. Je viens d'essayer en isolant complètement la macro, et en faisant fonctionner la dite macro sur le fichier de départ : cela ne plante pas !
J'ai donc une piste. Merci !
Une autre piste pourrait peut être marcher : utiliser le dispatcher. Mais pour cela, il faut sélectionner les groupes ou formes les uns après les autres, et je ne vois pas comment faire (pas de méthode select sur maPage).
LibreOffice 7.6, Debian 11
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer] Modification de l'ancrage d'objets

Message par Hubert Lambert »

Donc fournis-nous le code qui plante...
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
jaccomard
Fraîchement OOthentifié
Messages : 5
Inscription : 24 oct. 2018 07:36

Re: [Writer] Modification de l'ancrage d'objets

Message par jaccomard »

Ce qui plante, c'est le même code, mais avec un fichier transformé comme le fichier joint.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.6, Debian 11
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer] Modification de l'ancrage d'objets

Message par Hubert Lambert »

Le document contient 5 formes "fantômes", sans doute les scories d'une conversion ou d'un copier-coller.
Je n'ai trouvé aucun moyen de les modifier sans faire planter le programme. En revanche, il est possible de les supprimer par macro.
Je te retourne à tout hasard le fichier nettoyé.
Cordialement.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
AOOo 4.1.7 sur Win10
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
jaccomard
Fraîchement OOthentifié
Messages : 5
Inscription : 24 oct. 2018 07:36

Re: [Writer] Modification de l'ancrage d'objets

Message par jaccomard »

Bonjour,
ça plante encore, mais :
- en travaillant sur le fichier de départ, AVANT transformation en une colonne, ça marche. Et tu as mis le doigt sur un des problèmes,je pense : l'ancre est à modifier sur les groupes d'abord, et ensuite les shapes seuls, s'il en reste.
Merci pour le coup de main : j'étais vraiment bloqué.
Je mets résolu.
LibreOffice 7.6, Debian 11