[Résolu][Calc] couper coller texte barré

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 !
critoune
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 11 mai 2020 09:56

[Résolu][Calc] couper coller texte barré

Message par critoune »

bonjour,

j'ai récupéré un fichier de boulot (1750 lignes) dans lequel je dois extraire d'une colonne, le texte barré (présent dans certaines lignes), pour le copier dans une autre colonne.

je poste un fichier modèle.

je n'ai pas trouvé de sujet correspondant.

avec quel fonction pourrait on différencier le texte barré?

merci d'avance :D
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice Version : 7.2.7.2.M8 (x64) sous windows 10
contrainte boulot
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: couper coller texte barré

Message par zeguedon »

Bonjour,

Il n'existe pas de fonction native permettant un tel exercice. Il faudra passer par une macro pour repérer les textes barré afin de les extraire vers une autre colonne.

@+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
critoune
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 11 mai 2020 09:56

Re: couper coller texte barré

Message par critoune »

Ah ok, bon je vais chercher du côté des macros lundi prochain.
Merci bien
Bonnes fêtes de fin d'année 😀
libreoffice Version : 7.2.7.2.M8 (x64) sous windows 10
contrainte boulot
Avatar de l’utilisateur
Jurassic Pork
PassiOOnné
PassiOOnné
Messages : 639
Inscription : 09 août 2017 22:15

Re: couper coller texte barré

Message par Jurassic Pork »

Hello,
critoune a écrit : 30 déc. 2022 16:42 Ah ok, bon je vais chercher du côté des macros lundi prochain.
Cela risque de ne pas être si facile que cela car dans calc je crois que l'on ne peut pas rechercher quelque chose par attribut.
Peut-être une piste :
Copier la cellule dans le presse-papier.
Coller dans un document writer vierge (les attributs sont présents).
Faire une recherche sur l'attribut barré.
Récupérer ce qui est trouvé. Le copier dans le presse-papier.
Effacer le document writer vierge.
Coller le presse-papier dans la cellule désirée du document calc.

Ami calmant, J.P
LibreOffice 7.6.2.1 et OpenOffice 4.1.15 sous windows 11
LibreOffice 24.2.0 et OpenOffice 4.1.15 sous Ubuntu 20.04
Avatar de l’utilisateur
Michel JANZEF
ManitOOu
ManitOOu
Messages : 3581
Inscription : 12 janv. 2006 10:04

Re: couper coller texte barré

Message par Michel JANZEF »

Bonjour,
Je n'ai pas les connaissances suffisantes pour vous aider dans ce domaine, mais vous trouverez ici une solution de Piaf sur la recherche de caractères barrés dans un fichier Calc mais qui concerne des cellules entières.
Dernière modification par Michel JANZEF le 31 déc. 2022 11:07, modifié 1 fois.
AOo 4.1.16 (Oracle JRE x86 - 1.8.0_471) et LibO 25.8.6.2 (Oracle JRE x64 - 1.8.0_471) - Windows 11 Famille 25H2 (26200.6725) 64 bits
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: couper coller texte barré

Message par zeguedon »

Bonjour,
Sujet à déplacer en section macro. Merci
Jurassic Pork a écrit : 31 déc. 2022 08:36 Cela risque de ne pas être si facile que cela car dans calc je crois que l'on ne peut pas rechercher quelque chose par attribut.
L'objet curseur (maCellule.createTextCursor) dispose d'une propriété CharCrossedOut. Du coup :

à peaufiner pour gérer plusieurs occurrences de texte barré dans la même cellule :)

 Ajout : Code optimisé pour gérer plusieurs occurrences de texte barré dans la même cellule (plus compact que le précédent que j'ai volontairement supprimé) 

Code : Tout sélectionner

Sub Main
x = 1
oSheet = Thiscomponent.Sheets(0)
cell = oSheet.GetCellByPosition(0,x)
While cell.String <> ""
bavard = ""
otc = cell.createTextCursor
otc.gotoStart(False)	
Do While otc.goRight(1,False)
	if otc.CharCrossedOut then
		otc.goLeft(1,False) : otc.goRight(1,True)
		Do While otc.CharCrossedOut	
			if not otc.goRight(1,True) then 
				otc.goRight(1,True)
				exit do
			end if
		Loop
		bavard = bavard & otc.string
		otc.string = ""
	end if
loop
oSheet.GetCellByPosition(1,x).SetString(bavard)
x = x + 1
cell = oSheet.GetCellByPosition(0,x)
Wend
msgBox("Terminé !")
End Sub
Avant.png
Après.png
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
critoune
Membre lOOyal
Membre lOOyal
Messages : 27
Inscription : 11 mai 2020 09:56

Re: [Résolu][Calc] couper coller texte barré

Message par critoune »

Bonjour,

après réglage du niveau de sécurité pour pouvoir lancer la macro, la proposition de zeguedon me donne complète satisfaction. :D

merci zeguedon :bravo:

merci aussi à michel janef et jurassic pork pour votre implication :super:

voici une année qui commence magnifiquement avec ce dépannage.

bonne et heureuse année à vous.
libreoffice Version : 7.2.7.2.M8 (x64) sous windows 10
contrainte boulot