[Résolu] [Writer] Supprimer tous les cadres

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 !
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

[Résolu] [Writer] Supprimer tous les cadres

Message par Whiteneck »

Bonjour,

J'ai un document qui contient des images dans des cadres avec des légendes.
Je voudrais supprimer toutes les images, cadre et légendes.
J'ai fait ceci qui supprime les images, mais je me retrouve avec un cadre vide avec la légende.

Code : Tout sélectionner

Sub RemoveImages

   Dim oDoc as Object
   oDoc = ThisComponent

   Dim oGraphics as Object
   oGraphics = oDoc.getGraphicObjects()

   Dim oImg as Object

   For Each oImg in oGraphics
       oDoc.getText().removeTextContent(oImg)
   Next 

End Sub
Je dois dire que je ne sais pas comment faire.
Si une personne peut m'aider...
Merci d'avance
Dernière modification par Whiteneck le 05 mai 2021 21:13, modifié 1 fois.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12230
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Writer] Supprimer tous les cadres

Message par Bidouille »

Bonjour,

Avec autant de messages à votre compteur...
Image
Comment joindre un fichier au format ODF
Penser également à dépersonnaliser le fichier joint.
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

Re: [Writer] Supprimer tous les cadres

Message par Whiteneck »

Voici un doc type.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Writer] Supprimer tous les cadres

Message par jeanmi2403 »

Bonjour,
Même chose que pour les images, mais il faut s'adresser aux TextFrames :

Code : Tout sélectionner

monDocument = ThisComponent
leTexte = monDocument.Text
lesCadres = monDocument.TextFrames
for x = 0 to lesCadres.Count -1
  unCadre = lesCadres(x)
  leTexte.removeTextContent(unCadre)
next x
Bonne journée,
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25182
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer] Supprimer tous les cadres

Message par Dude »

Salut,

Pas besoin de récupérer le contenu du document, l'objet TextFrame a une méthode dispose :

Code : Tout sélectionner

Sub Main
	oDoc = ThisComponent
	oCadres = oDoc.getTextFrames
	If oCadres.hasByName("Cadre4") Then
    	oCadre = oCadres.getByName("Cadre4")
		oCadre.dispose()
	EndIf
End Sub
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

Re: [Writer] Supprimer tous les cadres

Message par Whiteneck »

:oops:
Merci, mais je ne sais pas comment appliquer vos conseils dans mon cas.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25182
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer] Supprimer tous les cadres

Message par Dude »

Whiteneck a écrit :Merci, mais je ne sais pas comment appliquer vos conseils dans mon cas.
Comment ça ?
As-tu exécuté ma macro sur ton document ? Elle supprime le cadre qu'il y a dedans.
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

Re: [Writer] Supprimer tous les cadres

Message par Whiteneck »

Oui, mais je veux supprimer tous les cadres d'un document qui en contient plusieurs.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Writer] Supprimer tous les cadres

Message par jeanmi2403 »

Whiteneck a écrit :Merci, mais je ne sais pas comment appliquer vos conseils dans mon cas.
Le code de Dude supprime le cadre (cadre4) qui se trouve dans ton exemple, par son nom.
Le mien supprime TOUS les cadres sans connaître leurs noms.
Evidemment, il faudra rajouter Sub et End Sub...
Bonne après midi,
PS : et tu drevrais mettre à jour ta version de LibreOffice, la dernière version stable est la 7.0.5
Dernière modification par jeanmi2403 le 29 avr. 2021 11:47, modifié 1 fois.
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Writer] Supprimer tous les cadres

Message par jeanmi2403 »

Whiteneck a écrit :Oui, mais je veux supprimer tous les cadres d'un document qui en contient plusieurs.
Apparemment, tu ne lis pas tous les messages ! Reprends le fil depuis le début, la solution y est...
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

Re: [Writer] Supprimer tous les cadres

Message par Whiteneck »

Jeanmi,

Sur la ligne :

Code : Tout sélectionner

  unCadre = lesCadres(x)
il m'affiche l'erreur : "Valeur ou type de données incorrect(e).
Index hors de la plage définie."
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
jeanmi2403
SuppOOrter
SuppOOrter
Messages : 1398
Inscription : 18 janv. 2008 09:02
Localisation : Val de Marne

Re: [Writer] Supprimer tous les cadres

Message par jeanmi2403 »

Chez moi, ça fonctionne sur le document que tu nous a donné.
A plus
Jean-Michel
LibO 7.5.9 et AoO 4.1.15 sur Windows 11 & Ubuntu 22.04
LibO 7.6 sur OpenSuse & Linux MX
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

Re: [Writer] Supprimer tous les cadres

Message par Whiteneck »

Ce n'est pas grave, je vais faire manuellement.
Merci.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25182
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Writer] Supprimer tous les cadres

Message par Dude »

Whiteneck a écrit :Oui, mais je veux supprimer tous les cadres d'un document qui en contient plusieurs.
Dans ce cas, pourquoi fournir un document avec un seul cadre ?

Hum, tu ne fais pas beaucoup d'effort. :?

Code : Tout sélectionner

Sub Main
	oDoc = ThisComponent
	oCadres = oDoc.getTextFrames
	for each oCadre in oCadres
		oCadre.dispose()
	next
End Sub
Et passe ton sujet à Image [Résolu]