[Résolu][Writer]Désélectionner "Saut" de page avant tableau

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 !
zutix
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 01 déc. 2017 13:35

[Résolu][Writer]Désélectionner "Saut" de page avant tableau

Message par zutix »

Voici un sujet pour expert :

Quel code permettrait de supprimer le saut de page avant le tableau dans lequel on est positionné ?
c'est-à-dire quel code ferait la même chose que : clic dans menu : Tableau > Propriétés du tableau > onglet Enchaînement > désélection de Saut

A noter que :
tableau.BreakType=com.sun.star.style.BreakType.NONE ne fonctionne pas

Merci d'avance et meilleurs vœux !
Dernière modification par Oukcha le 21 janv. 2020 09:13, modifié 2 fois.
Raison : Balisage
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9251
Inscription : 28 août 2010 08:45

Re: [WRITER]DESELECTIONNER SAUT AVANT TABLEAU

Message par micmac »

Bonjour à vous aussi. Nous avons l'habitude de saluer sur ce forum,
Dans votre signature il y a écrit : LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement
Votre signature est incomplètement renseignée et fait mention d'une version de LibreOfficeOffice qui n'est plus maintenue.

Afin de profiter des dernières améliorations, il est fortement recommandé d'être à jour de la dernière version stable

Dans votre signature il est nécessaire d'indiquer :
  1. La version exacte de AOO ou LibO (AOO 4.1.7, LibO 6.2.8 par exemple) ;
  2. La version exacte du système d'exploitation (Windows XP SP3, Vista SP2, Windows 7 SP1, Win 8.1, Win 10, Ubuntu 19.04, macOS 10.15.2 par exemple).
Accès direct à votre signature pour la corriger.

Cordialement.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 501
Inscription : 11 mai 2013 00:11
Localisation : Aix en Provence

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Noonours »

Bonjour
Le code suivant généré par l'enregistreur de macros fonctionne avec ma version de LibreOffice:

Code : Tout sélectionner

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Pagebreak"
args1(0).Value = com.sun.star.style.BreakType.NONE

dispatcher.executeDispatch(document, ".uno:Pagebreak", "", 0, args1())


end sub
Sinon avec une utilisation de ton moteur de recherche préféré, on peut trouver ce lien.

Cordialement,
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 7.6.5.2 Stable et OpenOffice 4.1.15 sous Windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Dude »

zutix a écrit :A noter que :
tableau.BreakType=com.sun.star.style.BreakType.NONE ne fonctionne pas
Cette phrase ne veut rien dire.
On ne sait pas ce que contient ta variable tableau, ni comment elle a été déclarée.

Comme d'habitude, il faut systématiquement :
  1. publier le code complet de la macro
  2. fournir un document incorporant celle-ci
zutix
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 01 déc. 2017 13:35

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par zutix »

Voici le code commenté et le repérage de la zone problématique

Code : Tout sélectionner

'------------------------------------------------------------------
' Supprimer la page de no passe en parametre
' Le document actif est constitué de pages toutes remplies par 1 tableau chacune

' Ex d'appel de la fonction pour aider a comprendre  :
' If supprimerPageAfs(20) Then 
'	msgBox "page 20 supprimée" 
' Else 
'	msgBox "erreur lors du traitement visant à oter la page 20" 
' End If
'

Function supprimerPageAfs(iPage As Integer) As Boolean
	Dim iP As Integer 
	Dim oCursV As Object, oCursE As Object
	Dim oTextTab As Object, oCell As Object, oCellCursE As Object

' le curseur visible sert uniquement à voir en mode pas a pas
	oCursV=thisComponent.currentController.viewCursor
	supprimerPageAfs=False

	' pour une page entre la seconde et l'avant-dernière   OK
	' selectionner le tableau de la page et l'effacer
	' renumeroter la page suivante et rebaptiser le tableaux de cette page 
	' idem pour toutes les pages jusqu'a la fin  
	If iPage>1 And iPage<thisComponent.CurrentController.PageCount Then 
		oTextTab=thisComponent.TextTables.getByName("TBL_0_"&iPage-1)	
		oTextTab.dispose()
		For iP=iPage To thisComponent.CurrentController.PageCount Step (1)
			oTextTab=thisComponent.TextTables.getByName("TBL_0_"&iP)
			oCell=oTextTab.getCellByName(trouverCellPage(iP+1))
			oCellCursE=oCell.createTextCursor()
			oCursV.gotoRange(oCellCursE,false)
			oCell.String="Page "&iP
			oTextTab.Name="TBL_0_"&iP-1
		Next iP
		supprimerPageAfs=True


'*** DEBUT ZONE qui pose probleme **************************************************		
	' pour la derniere page qui pose probleme !!!!!!!!!!!!!!!!!!!
	' selectionner le tableau	
	' effacer le saut de page avant le tableau puis effacer le tableau
	' ou effacer le tableau puis effacer la page blanche qui reste a la fin = le saut de page 
	Else 
	  If iPage=thisComponent.CurrentController.PageCount Then
 	  	oTextTab=thisComponent.TextTables.getByName("TBL_0_"&iPage-1)
 	  	
 	  	'tentative de suppression du saut de page avant tableau NOK	Evidemment il n'y avait pas de ' lors du test
 '		oTextTab.BreakType=com.sun.star.style.BreakType.NONE   
 
 		'autre tentative en appelant la sub du gentil Noonours  NOK          Evidemment il n'y avait pas de ' lors du test
 '              oterSautAvTab
	  

		'effacer le tableau
	  	oTextTab.dispose()
	  	
	  	' retour de la fonction
		supprimerPageAfs=True

'*** FIN ZONE problématique **********************************************************
	
	' pour la 1ere page OK car cela n'a pas de sens de la supprimer
	  Else
		msgBox "La première page n'est pas traitée."
	  End If
	End If
End Function


sub oterSautAvTab
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Pagebreak"
args1(0).Value = com.sun.star.style.BreakType.NONE

dispatcher.executeDispatch(document, ".uno:Pagebreak", "", 0, args1())
end sub

L'extrait joint du fichier est suffisant pour comprendre et tester. Objectif : supprimer la page 6 sans qu'il reste de page blanche à la fin.
Merci d'avance aux bonnes volontés.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Oukcha le 16 janv. 2020 07:30, modifié 1 fois.
Raison : Balise [code] et [/code] = lecture et sélection simplifiées de votre macro
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Dude »

zutix a écrit :L'extrait joint du fichier est suffisant pour comprendre et tester. Objectif : supprimer la page 6 sans qu'il reste de page blanche à la fin.
Je ne comprends pas le rapport entre supprimer une page et ton histoire de saut de page avant tableau.
Ton document montre que le tableau en page 4 n'est pas paramétré avec cette option :
capture.png
:?:
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
zutix
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 01 déc. 2017 13:35

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par zutix »

Pour clarifier :
C'est la page 6 qui importe ici. Inutile de se préoccuper des autres pages. Le doc est généré automatiquement par un outil spécialisé auquel on ne peut accéder et qui n'est pas writer.
Une fois le doc généré, il est possible de l'ouvrir avec writer et de le retravailler dans writer.

Ma question est : comment arriver à supprimer complètement la dernière page du doc ouvert dans writer sans laisser de page blanche à la fin en complétant ma macro ?

Merci d'avance pour toute idée constructive.
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Dude »

zutix a écrit :comment arriver à supprimer complètement la dernière page
Et je me répète : quel est le rapport avec le titre de ta question ?
Quelqu'un cherchant comment gérer le saut de page d'un tableau ne va rien comprendre.
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Hubert Lambert »

Bonjour,

Essaie ceci :

Code : Tout sélectionner

    doc = thiscomponent
    tableau = doc.TextTables.getByName("TBL_0_5")
    tableau.PageDescName = ""
    tableau.BreakType = com.sun.star.style.BreakType.NONE
Voir le lien fourni par Noonours pour plus d'informations.

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)
zutix
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 01 déc. 2017 13:35

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par zutix »

Merci d'avoir répondu mais comme déjà dit cela ne fonctionne pas sur ma version de libre office.
Cordialement
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Dude »

zutix a écrit :comme déjà dit cela ne fonctionne pas sur ma version de libre office
Comme déjà dit, as-tu fait le test manuellement ?
  1. Ouvrir le document
  2. Aller sur la page 6
  3. Editer les propriétés du tableau "TBL_0_5"
  4. Dans l'onglet Enchaînements, décocher la case "Saut"
Cela ne permet pas la suppression de la dite-page.
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par Hubert Lambert »

zutix a écrit :Merci d'avoir répondu mais comme déjà dit cela ne fonctionne pas sur ma version de libre office.
Cordialement
Je ne vois rien , dans tes messages précédents, qui fasse référence à la propriété PageDescName.
Or il est indispensable que celle-ci contienne une chaîne vide pour supprimer le saut de page.
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)
zutix
Membre lOOyal
Membre lOOyal
Messages : 37
Inscription : 01 déc. 2017 13:35

Re: [Writer]Désélectionner "Saut" de page avant tableau

Message par zutix »

Excellent ! Tu as raison Hubert Lambert. Merci infiniment.

Résumé pour ceux qui rencontre la même difficulté :
Pour supprimer un "saut de page avant tableau" avant de supprimer le tableau lui même
pour qu'une fois le tableau effacé il ne reste pas de page blanche :

Code : Tout sélectionner

Dim oTestTab As object
oTextTab=thisComponent.TextTables.getByName(nom du tableau)

' ***  suppression du saut de page avant tableau
oTextTab.PageDescName = ""
oTextTab.BreakType=com.sun.star.style.BreakType.NONE 

' ***  effacement du tableau
oTextTab.dispose()
Dernière modification par Oukcha le 21 janv. 2020 09:12, modifié 1 fois.
Raison : Balise [code] et [/code] = lecture et sélection simplifiées de votre macro
LibreOffice Version: 4.3.7.2.lin04 par exemple mais pas seulement

(Cette version est encore celle que j'utilise et je n'ai pas la possibilité de la changer. Merci de votre compréhension)