[Résolu] [Calc] simplifier le texte d'une cellule

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 !
Jeremy_s
Fraîchement OOthentifié
Messages : 4
Inscription : 01 juin 2009 21:38

[Résolu] [Calc] simplifier le texte d'une cellule

Message par Jeremy_s »

Bonjour,

à la recherche d'une solution pour traiter des données "texte", les réponses que j'ai pu trouver m'orientaient vers l'utilisation des macros.
Ne maitrisant pas très bien voire pas du tout les macros j'ai cherché un forum afin de me tourner vers des experts.

Je souhaite pouvoir simplifier le texte dans une cellule en ne conservant que les informations texte ABC..123...sans accent, sans ponctuation ni d'espace, etc... + Passer le tout en minuscule.


Exemple:

L'hameçon du 3ème Pôle

deviendrait :
lhamecondu3emepole

et

L'A.F.D.O

deviendrait
lafdo

J'ai donc une colonne A à convertir en colonne B (je souhaite conserver les informations d'origine dans le tableau).
Il y a bien une fonction =MINUSCULE qui me permet de basculer mes infos en minuscule, mais le plus difficile reste le filtrage des caractères à accents ou signes et espace... Et là, j'ai pas trouvé de fonctions adaptées.

Peut-être que certains d'entre vous ont déjà ce script sous le coude...
Merci par avance pour votre aide.

Cordialement,

Jeremy.
OpenOffice3.1.0 sous MacOS 10.4
Jeremy_s
Fraîchement OOthentifié
Messages : 4
Inscription : 01 juin 2009 21:38

Re: [Calc] simplifier le texte d'une cellule

Message par Jeremy_s »

j'ai trouvé un script, mais impossible de le faire fonctionner sous OO...


Code : Tout sélectionner

Function OteAccents(txt)
Dim ARemplacer()
Dim RemplacerPar()
Dim Cel
Dim Caract
Dim i, a
ARemplacer = Array(" ", "'", "À", "à", "Â", "â", "È", "è", "É", "é", "Ê", "ê", "Ë", "ë", "Î", "î", "Ï", "ï", "Ô", "ô", "Ö", "ö", "Û", "û", "Ü", "ü", "Ù", "ù", "Y", "ÿ")

RemplacerPar = Array("", "", "A", "a", "A", "a", "E", "e", "E", "e", "E", "e", "E", "e", "I", "i", "I", "i", "O", "o", "O", "o", "U", "u", "U", "u", "U", "u", "Y", "y", "Y", "y")
txt = Trim(txt)
For i = 1 To Len(txt)
     Caract = Mid(txt, i, 1)
     For a = 0 To UBound(ARemplacer)
     If Caract = ARemplacer(a) Then
     Caract = RemplacerPar(a)
     End If
     Next a
     OteAccents = OteAccents & Caract
Next i
End Function


ça bloque au terme Caract et aussi à l'expression txt = Trim(txt), je suppose donc que le code est pas adapté à OpenOffice...
Et qu'il faudrait peut-être uniquement modifier certains termes pour être conforme.

Any idea?
Dernière modification par Oukcha le 02 juin 2009 06:29, modifié 1 fois.
Raison : Pose balise [code] et [/code]
OpenOffice3.1.0 sous MacOS 10.4
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] simplifier le texte d'une cellule

Message par Dude »

Salut,
Jeremy_s a écrit :j'ai trouvé un script, mais impossible de le faire fonctionner sous OO...
Dans ce cas, il est recommandé de citer la source. C'est une question de respect pour l'auteur du code.
Jeremy_s a écrit :je suppose donc que le code est pas adapté à OpenOffice...
Et qu'il faudrait peut-être uniquement modifier certains termes pour être conforme.
Si, il est adapté. Il faut juste savoir comment tu appelles la fonction dans ton classeur. Joins nous un fichier avec la macro que l'on voit ce que tu fais.

:?:
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Re: [Calc] simplifier le texte d'une cellule

Message par Jeff »

Bonjour à tous,

Christian Wtd a déjà fais une fonction personnalisée pour supprimer les accents : http://christianwtd.free.fr/index.php?r ... Function04

Pour supprimer les espaces et ponctuations, une ligne est à rajouter (éventuellement à compléter) :

Code : Tout sélectionner

ElseIf Car = "'" Or Car = "." Or Car = ";" Or Car = ":" Or Car = "!" Or Car = "-" Or Car = "("  Or Car = ")"  Or Car = " " Then
Car = ""
Mid(Texte, n, 1) = Car
Pour ensuite l'employer, la texte étant en A1, saisir la formule :

Code : Tout sélectionner

=SUPPRIME_ACCENTS(A1)
A + :wink:

EDIT : englober cette fonction dans une fonction MINUSCULE :

Code : Tout sélectionner

=MINUSCULE(SUPPRIME_ACCENTS(A1))
Je joins le classeur-test :
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Jeremy_s
Fraîchement OOthentifié
Messages : 4
Inscription : 01 juin 2009 21:38

Re: [Calc] simplifier le texte d'une cellule

Message par Jeremy_s »

Le script que j'ai récupéré a été posté sur un forum par Misange migrateuse. (désolé, je ne savais pas qu'il fallait inclure le nom de celui qui a posté un script... Cela dit, il en est peut-être pas l'auteur...)

Jeff,
Merci pour ton message, je vais essayer tout ça de suite...
!!!!!
SUPER ça à l'air de fonctionner... il me reste à tester ça sur mon fichier global, mais sur mon fichier de test c'est tip top!!!! Un GRAND MERCI !!

Bonne journée à vous tous.
OpenOffice3.1.0 sous MacOS 10.4
prof2math
Fraîchement OOthentifié
Messages : 1
Inscription : 05 sept. 2018 21:41

Re: [Résolu] [Calc] simplifier le texte d'une cellule

Message par prof2math »

ATTENTION

le code fourni ne fonctionne pas pour 2 caractères spéciaux consécutifs. il faut rajouter une ligne

Code : Tout sélectionner

n=n-1 
en desssous de

Code : Tout sélectionner

Mid(Texte, n, 1) = Car
ce qui donne:

Code : Tout sélectionner

			ElseIf Car = "'" Or Car = "." Or Car = ";" Or Car = ":" Or Car = "!" Or Car = "-" Or Car = "(" Or Car = "," Or Car = "+" Or Car = " "  Or Car = ")"  Or Car = " "Then
				Car = ""
				Mid(Texte, n, 1) = Car
				n=n-1
			Endif
info: j'ai aussi rajouté l'espace automatique devant les deux points par exemple. c'est celui entre "+" et ")" dans la liste.
LibreOffice Version: 5.0.6.3 Locale??: fr-FR (fr_FR) Windows 10 Pro 64 bits
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Résolu] [Calc] simplifier le texte d'une cellule

Message par Churay »

Bonjour,

C'est résolu, mais pour le fun, voici une autre approche :

Code : Tout sélectionner

Option Explicit

Sub Main
	MsgBox OteAccents(("L'hameçon du 3ème Pôle")
	MsgBox OteAccents(("L'A.F.D.O")
End Sub

Function OteAccents(sTxt AS String)
Dim aSource() AS String, aResult() AS String, iX AS Integer
	aSource = Array(" ", "'", "À", "à", "Â", "â", "È", "è", "É", "é", "Ê", "ê", "Ë", "ë", "Î", "î", "Ï", "ï", "Ô", "ô", "Ö", "ö", "Û", "û", "Ü", "ü", "Ù", "ù", "Y", "ÿ", ".", ",", ";", ":", "!", "-", "+", "(", ")" )
	aResult = Array("",  "",  "A", "a", "A", "a", "E", "e", "E", "e", "E", "e", "E", "e", "I", "i", "I", "i", "O", "o", "O", "o", "U", "u", "U", "u", "U", "u", "Y", "y""", "", "", "", "", "", "", "", "" )
	FOR iX = 0 TO UBOUND(aSource)
		IF InStr(sTxt, aSource(iX)) > 0 THEN
			sTxt = join(split(sTxt, aSource(iX)), aResult(iX))
		END IF
	NEXT iX
	OteAccents = sTxt
END Function
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...