[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 !

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

Messagepar zutix » 14 Jan 2020 15:40

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 édition par Oukcha le 21 Jan 2020 10:13, édité 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)
zutix
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 01 Déc 2017 14:35

Re: [WRITER]DESELECTIONNER SAUT AVANT TABLEAU

Messagepar micmac » 14 Jan 2020 15:46

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.
Les formats ouverts (ODF) assurent la pérennité de vos documents.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 6925
Inscrit le : 28 Août 2010 09:45

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

Messagepar Noonours » 14 Jan 2020 18:38

Bonjour
Le code suivant généré par l'enregistreur de macros fonctionne avec ma version de LibreOffice:
Code : Tout sélectionner   AgrandirRéduire
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 plantigrade râleur

Pour obtenir la réponse la plus précise possible, N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 6.3.6.2 sous Windows 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnverti
Membre cOOnverti
 
Message(s) : 367
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

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

Messagepar Dude » 15 Jan 2020 09:41

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
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21734
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar zutix » 15 Jan 2020 14:31

Voici le code commenté et le repérage de la zone problématique
Code : Tout sélectionner   AgrandirRéduire
'------------------------------------------------------------------
' 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.
Pièces jointes
structureDoc.odt
Extrait du fichier suffisant pour comprendre et tester. Objectif : supprimer la page 6 sans qu'il reste de page blanche à la fin.
(18.9 Kio) Téléchargé 20 fois
Dernière édition par Oukcha le 16 Jan 2020 08:30, édité 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)
zutix
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 01 Déc 2017 14:35

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

Messagepar Dude » 15 Jan 2020 15:40

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


:?:
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21734
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar zutix » 15 Jan 2020 16:16

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)
zutix
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 01 Déc 2017 14:35

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

Messagepar Dude » 15 Jan 2020 17:04

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21734
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar Hubert Lambert » 15 Jan 2020 21:59

Bonjour,

Essaie ceci :
Code : Tout sélectionner   AgrandirRéduire
    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)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1212
Inscrit le : 06 Avr 2016 08:26

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

Messagepar zutix » 17 Jan 2020 14:39

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)
zutix
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 01 Déc 2017 14:35

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

Messagepar Dude » 17 Jan 2020 16:40

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
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21734
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar Hubert Lambert » 17 Jan 2020 18:20

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)
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
 
Message(s) : 1212
Inscrit le : 06 Avr 2016 08:26

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

Messagepar zutix » 21 Jan 2020 08:57

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   AgrandirRéduire
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 édition par Oukcha le 21 Jan 2020 10:12, édité 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)
zutix
Membre lOOyal
Membre lOOyal
 
Message(s) : 27
Inscrit le : 01 Déc 2017 14:35


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 3 invité(s)