[Résolu][Writer] Insérer un nombre variable de page type

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 !
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

[Résolu][Writer] Insérer un nombre variable de page type

Message par ooSikas »

Bonjour,

Je sollicite votre aide dans le cadre de l'outil que je développe et qui me donne du fil a retordre.

J'utilise un tableur Calc dans lequel je saisi et calcule diverses informations. Informations qui par la suite sont dispatchées à différents repères de textes lors de l'édition de mon fichier Writer.
Mon fichier Writer est un modèle de devis pour la vente de bâtiment constitué comme suit :

Page de garde
Informations du bâtiment
Tableau récapitulatif des prestations
Conditions générales

Jusqu'ici tout va bien. Mais la situation se corse lorsque j'ai plusieurs bâtiments à vendre dans le même devis. Exemple : pour 2 bâtiment je voudrais obtenir un devis sous la forme suivante :

Page de garde
Informations du bâtiment 1
Tableau récapitulatif des prestations du bâtiment 1
Informations du bâtiment 2
Tableau récapitulatif des prestations du bâtiment 2
Conditions générales

Je sais récupérer les informations du fichier Calc pour le bâtiment 2, mais ce que je ne sais pas faire c'est créer dans le fichier Writer les pages "Informations du bâtiment 2" et "Tableau récapitulatif des prestations du bâtiment 2". Ces deux pages doivent être identiques aux pages correspondantes du bâtiments 1, à l’exception de la valeurs des données Calc qui y sont incorporées.

Je vous avoue que je ne sais pas comment m'y prendre, les pistes que j'ai essayé n'ont pas abouti du tout.

Je vous remercie d'avance pour votre aide.

Vous trouverez un PJ mes fichiers Calc et Writer simplifiés et rendus anonymes.

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par ooSikas le 29 mai 2018 10:07, modifié 1 fois.
LibreOffice Version: 6.4.4.2 sous Windows 10
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 16960
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: [Writer] Insérer un nombre variable de page type

Message par jeanmimi »

Bonjour,
ooSikas a écrit :Mais la situation se corse lorsque j'ai plusieurs bâtiments à vendre dans le même devis.
C'est une situation qui est facile à gérer par un Rapport de Base de données, moins facile avec Calc.
Avec une organisation différente des onglets, une sortie par Publipostage ou Étiquette pourrait être aussi envisagée.
LibreOffice : Version : 24.2 (x64)(12 avril 2024)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Writer] Insérer un nombre variable de page type

Message par DLE »

Bonjour,

Une solution à valider, basée sur l'insertion du modèle suivant nombre de bâtiment. Les signets de même nom sont indexés automatiquement à l'insertion.
Toutes mes modifs sont repérables par "***dle".
Cdlt.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

Re: [Writer] Insérer un nombre variable de page type

Message par ooSikas »

Bonjour,

Merci DLE, c'est exactement ce type de méthode qu'il me fallait, je vais pouvoir me débloquer.

En testant un peu, il me vient 2 questions:
- Le nouveau document s'ajoute à la fin du document. J'imagine que cela vient du curseur positionné mais je ne suis pas sûr. Je souhaiterai faire l'insertion à un endroit précis, est t'il possible d'envoyer le curseur à un repère de texte précis pour faire l'insertion du document à la page suivant ce repère de texte? Si oui, comment?

- Quand j’insérai le nouveau document, sa première page prenait l'en tête de la première page de mon document principal. J'ai résolu le problème en changeant

Code : Tout sélectionner

PageApres = com.sun.star.style.BreakType.PAGE_AFTER
par

Code : Tout sélectionner

PageApres = com.sun.star.style.BreakType.PAGE_BEFORE
. Mais j'avoue que c'est un peu par hasard, et que je ne sais pas bien pourquoi ça a fonctionné..

Merci d'avance

Cordialement,
LibreOffice Version: 6.4.4.2 sous Windows 10
Avatar de l’utilisateur
DLE
SuppOOrter
SuppOOrter
Messages : 1477
Inscription : 30 déc. 2007 18:56
Localisation : Lille

Re: [Writer] Insérer un nombre variable de page type

Message par DLE »

Bonjour,

Par l'exemple, insérer le document avant les "Conditions générales..."
Au titre "Conditions générales..." du modèle, ajouter le signet "CGP", puis dans la macro dans la boucle "FOR" remplacer la séquence "IF .... END IF" par

Code : Tout sélectionner

	if n > 1 then									
		PageApres = com.sun.star.style.BreakType.PAGE_AFTER   
		oSignetCGP = oWriter.Bookmarks.getByName("CGP") 
		oTexte = oSignetCGP.Anchor.text			
		leCurseur = oTexte.createTextCursorByRange(oSignetCGP.Anchor.Start)    
		with leCurseur								
'			.gotoEnd(false)								
			.breakType=PageApres					 	
		end with										
		leCurseur.insertDocumentFromURL(sAdresseDoc,propFich())  
	end if	


Cdlt.
MacOS Sonoma 14.4.1 (iMac-Intel) : AOO 4.1.15 , LibreOffice 7.6.5.2, Adoptium-temurinJDK_1.8.0_402 -
Windows 10 64 bits :
AOO 4.1.15, Libreoffice 7.1.8.1 - FireFox, Thunderbird, ORB 1.2.1
ooSikas
Membre OOrganisé
Membre OOrganisé
Messages : 72
Inscription : 22 juil. 2017 08:33

Re: [Writer] Insérer un nombre variable de page type

Message par ooSikas »

Bonjour,

Impeccable, merci beaucoup pour votre aide. Mon sujet est résolu

Cordialement,
LibreOffice Version: 6.4.4.2 sous Windows 10