OVH Cloud OVH Cloud

Remplacer caracteres accentuer

7 réponses
Avatar
David
Bonjour
Pourriez vous m'expliquer comment automatiser le remplacement de caracteres
accentuer (par exemple un é par un e) dans une table toujours nommer pareil.
--
A+
David

7 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

J'avais cette petite fonction qui fonctionnait il me semble :

Il suffit de l'appeler dans une requête de mise à jour

***************************************
Public Function RemoveAccents$(str$)
Dim tmp$
Dim i%, X
tmp = Trim(str)
For i = 1 To Len(tmp)
X = Asc(Mid(tmp, i, 1))
Select Case X
Case 192 To 197: X = "A"
Case 200 To 203: X = "E"
Case 204 To 207: X = "I"
Case 209: X = "N"
Case 210 To 214: X = "O"
Case 217 To 220: X = "U"
Case 221: X = "Y"
Case 224 To 229: X = "a"
Case 232 To 235: X = "e"
Case 236 To 239: X = "i"
Case 241: X = "n"
Case 240, 242 To 246: X = "o"
Case 249 To 252: X = "u"
Case 253, 255: X = "y"
Case Else: X = Chr(X)
End Select
RemoveAccents = RemoveAccents & X
Next
End Function
***************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"David" a écrit dans le message de
news:
Bonjour
Pourriez vous m'expliquer comment automatiser le remplacement de
caracteres

accentuer (par exemple un é par un e) dans une table toujours nommer
pareil.

--
A+
David


Avatar
David
Merci pour la reponse mais n'etant pas un expert peux tu eclairer un peu plus
Comment faire pour appeler cette fonction dans la requete MAJ.
Que signifie "Case 192 To 197: X = "A"
Merci
--
A+
David



Bonjour

J'avais cette petite fonction qui fonctionnait il me semble :

Il suffit de l'appeler dans une requête de mise à jour

***************************************
Public Function RemoveAccents$(str$)
Dim tmp$
Dim i%, X
tmp = Trim(str)
For i = 1 To Len(tmp)
X = Asc(Mid(tmp, i, 1))
Select Case X
Case 192 To 197: X = "A"
Case 200 To 203: X = "E"
Case 204 To 207: X = "I"
Case 209: X = "N"
Case 210 To 214: X = "O"
Case 217 To 220: X = "U"
Case 221: X = "Y"
Case 224 To 229: X = "a"
Case 232 To 235: X = "e"
Case 236 To 239: X = "i"
Case 241: X = "n"
Case 240, 242 To 246: X = "o"
Case 249 To 252: X = "u"
Case 253, 255: X = "y"
Case Else: X = Chr(X)
End Select
RemoveAccents = RemoveAccents & X
Next
End Function
***************************************

--
@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://www.mpfa.info/
------------------------------------
"David" a écrit dans le message de
news:
Bonjour
Pourriez vous m'expliquer comment automatiser le remplacement de
caracteres

accentuer (par exemple un é par un e) dans une table toujours nommer
pareil.

--
A+
David







Avatar
Eric
Bonjour,

Merci pour la reponse mais n'etant pas un expert peux tu eclairer un peu plus
Comment faire pour appeler cette fonction dans la requete MAJ.


Tu copies et colles la fonction de Jessy dans un module de portée
globale (Onglet Modules) dans la fenêtre de la bd. Tu sauves ce module
sous le nom modRemoveAccent.

Tu crées une requête Mise à jour avec ta table et le champ à traiter.
Sur la ligne Mise à jour du champ (dans la grille) tu mets :

RemoveAccents$([NomChamp]) ' à adapter

Que signifie "Case 192 To 197: X = "A"


On analyse le code Ascii du caractère, si celui-ci est compris entre 192
et 197, cela correspond au A surmonté d'un caractère, par exemple d'un
accent(À), tilde(Ã), d'un rond (Å), ... on le rempace par A. Idem pour
les autres

Merci


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
David
Merci Eric pour ces explications
Un dernier "peut etre" conseil
Comment remplacer des caracteres clavier (ex l'apostrophe ,le guillemet, le
point virgule etc) par un espace
--
A+
David



Bonjour,

Merci pour la reponse mais n'etant pas un expert peux tu eclairer un peu plus
Comment faire pour appeler cette fonction dans la requete MAJ.


Tu copies et colles la fonction de Jessy dans un module de portée
globale (Onglet Modules) dans la fenêtre de la bd. Tu sauves ce module
sous le nom modRemoveAccent.

Tu crées une requête Mise à jour avec ta table et le champ à traiter.
Sur la ligne Mise à jour du champ (dans la grille) tu mets :

RemoveAccents$([NomChamp]) ' à adapter

Que signifie "Case 192 To 197: X = "A"


On analyse le code Ascii du caractère, si celui-ci est compris entre 192
et 197, cela correspond au A surmonté d'un caractère, par exemple d'un
accent(À), tilde(Ã), d'un rond (Å), ... on le rempace par A. Idem pour
les autres

Merci


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

Tu peux faire une fonction comme celle-ci:
Function CaracteresInterdits(str$)
Dim tmp As String, i As Integer, x As String
tmp = Trim(str$)
For i = 1 To Len(tmp)
x = Asc(Mid(tmp, i, 1))
Select Case x
' pour éliminer les caractères suivants :
' 34=":39=':44=,:46=.:58=: :59=;
Case 34, 39, 44, 46, 58, 59: x = Chr(32)
Case Else: x = Chr(x)
End Select
CaracteresInterdits = CaracteresInterdits & x
Next i
End Function

mais tu peux aussi ajouter les lignes
' pour éliminer les caractères suivants :
' 34=":39=':44=,:46=.:58=: :59=;
Case 34, 39, 44, 46, 58, 59: x = Chr(32)
avant l'instruction Case Else dans la fonction de Jessy. Elle sera
dénaturée car initialement elle ne supprimait que les accents.

Mon choix se porterait sur l'écriture de la fonction plutôt que sur la
dénaturation de celle de Jessy compte tenue que cette dernière a de
fortes chances d'être très souvent utilisée et non celle supprimant les
virgules, points-virgule ... En plus, ça sera plus souple d'utilisation.

Dans la requête mise à jour ca donnerait quelquechose comme
CaracteresInterdits$(RemoveAccents$([NomChamp]))

Merci Eric pour ces explications
Un dernier "peut etre" conseil
Comment remplacer des caracteres clavier (ex l'apostrophe ,le guillemet, le
point virgule etc) par un espace


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
ooops !!!
ce n'est pas x as String mais x as Integer

Dim tmp As String, i As Integer, x As String





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...
:-(
Non, il faut laisser x en Variant donc soit mettre Dim x as Variant soit
Dim x tout court.

ooops !!!
ce n'est pas x as String mais x as Integer

Dim tmp As String, i As Integer, x As String








--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr