OVH Cloud OVH Cloud

Majuscule accentuée --> non accentuée

16 réponses
Avatar
seeber
Bonjour,

Pour faire une comparaison entre 2 tables, je dois forcer un champ en
majuscule avec la commande Ucase.
Cependant, cette commande ne me convient pas car elle me fait des majuscules
accentuées or je veux absolument des majuscules sans accent. C
Comment puis-je faire?
Merci par avance pour vos explications.

Seeber :)

6 réponses

1 2
Avatar
Tisane

Effectivement, il fallait mettre des ; au lieu des , mais j'ai retrouvé
le
même résultat à savoir des majuscules accentuées!!!
En fait le paramètre 18 fait appel aux paramètres régionaux donc le même
que
celui de la commande 'Majuscule([ma colonne])'.
En clair, je pense qu'il faut que je change le paramètre régional des
majuscules et là je n'arrive à pas à le trouver...je ne trouve que les
paramètre smonnaie,date,heure..


Curieux, chez moi, je n'ai plus les accents avec 18 (ni même avec 17 ;-)
Dommage, cette solution a le mérite de la simplicité.

Conclusion : comme d'habitude, il vaut mieux en rester aux valeurs sûres et
Raymond en est une ;-) Il va bien revenir...
Concernant les paramètres régionaux, il est préférable de ne pas y toucher
car tu ne modifieras pas que le comportement d'Access.
Et il n'y a pas de paramètre régional concernant les majuscules, mais
concernant la langue entière et sa codification.

--
Tisane


Bonjour "seeber",

Sinon, j'ai essayé la commmande StrConv([MaColonne],1,18), et là aussi
je
n'arrive pas à obtenir un résultat. A chaque fois, il me met le message
suivant : "Vous avez omis une opérande ou un opérateur, vous avez entré
un
caractère ou une virgule non valides, ou encore du texte sans le
délimiter
par des guillemets"


Je ne réponds qu'à cette partie. Si tu mets cette instruction dans une
requête, remplace les , par des ; comme ceci
StrConv([MaColonne];1;18)

Bien entendu, remplace MaColonne par le nom réel de ton champ.

--
Tisane

J'ai essayé d'intégre la "function" (SupprimerAccents) dans mon
expression
de ma requête et cela ne marche pas. J'obtients le message suivant :
"Fonction 'SupprimerAccents' non définie dans l'expression. Je précise
que
j'ai copié la fonction dans un module en ayant rajouter le terme
'public
function'.


Je ne sais plus quoi faire !!!!!

Seeber








--
Tisane



Avatar
Raymond [mvp]
Bonjour Tisane.

c'est bien la peine que Ducros se décarcasse !

tous les LanguageID sont sur mon site :
http://officesystem.access.free.fr/vba/langages_utilises.htm

Chacun fait ce qu'il veut mais pourquoi pas mettre 1077 à la place de 18 ?

Par défaut toutes les fonctions ayant une LCID en paramètres, prennent l'ID
du paramètre régional par défaut et c'est bien normal. Pourquoi une seule
fonction irait chercher un autre langage qui de plus n'est peut-être pas
installé sur la machine ?
Il est normal aussi qu'en indiquant un code langage 9 par exemple, strconv
ne retourne pas de caractères accentués, ce qui est un minimum pour le
langage anglais, mais la fonction retournera-t-elle le bon caractère ? pas
du tout, car elle retournera le caractère correspondant au code langage mais
ton code langage Zoulou n'étant pas installé, tu risques de retourner
n'importe quoi.
un peu de bon sens et de simplicité et tout ira bien.

En ce qui concerne la fonction, je viens de tester, ça marche très bien. il
n'y a pas besoin d'indiquer public, car elle est dans un module, donc public
par défaut.
j'ai testé:

Expr1: Majuscule(SupprimerAccents(Nz([LeNom];"")))
ou
UCase(SupprimerAccents(Nz([LeNom],""))) AS Expr1

le Nz n'est pas obligatoire mais préserve d'une valeur Nul qui n'est pas
testée dans la fonction.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"Tisane" a écrit dans le message de news:
46821b5c$0$27385$
|
| > Effectivement, il fallait mettre des ; au lieu des , mais j'ai retrouvé
| > le
| > même résultat à savoir des majuscules accentuées!!!
| > En fait le paramètre 18 fait appel aux paramètres régionaux donc le même
| > que
| > celui de la commande 'Majuscule([ma colonne])'.
| > En clair, je pense qu'il faut que je change le paramètre régional des
| > majuscules et là je n'arrive à pas à le trouver...je ne trouve que les
| > paramètre smonnaie,date,heure..
|
| Curieux, chez moi, je n'ai plus les accents avec 18 (ni même avec 17 ;-)
| Dommage, cette solution a le mérite de la simplicité.
|
| Conclusion : comme d'habitude, il vaut mieux en rester aux valeurs sûres
et
| Raymond en est une ;-) Il va bien revenir...
| Concernant les paramètres régionaux, il est préférable de ne pas y toucher
| car tu ne modifieras pas que le comportement d'Access.
| Et il n'y a pas de paramètre régional concernant les majuscules, mais
| concernant la langue entière et sa codification.
|
| --
| Tisane
Avatar
Tisane
Bonjour Raymond,

c'est bien la peine que Ducros se décarcasse !
tous les LanguageID sont sur mon site :
http://officesystem.access.free.fr/vba/langages_utilises.htm


Ah ! Je suis loin d'avoir tout vu sur tes sites (et tu en rajoutes tous les
jours, j'ai du mal à suivre ;-))

[...]
Il est normal aussi qu'en indiquant un code langage 9 par exemple, strconv
ne retourne pas de caractères accentués, ce qui est un minimum pour le
langage anglais, mais la fonction retournera-t-elle le bon caractère ? pas
du tout, car elle retournera le caractère correspondant au code langage
mais
ton code langage Zoulou n'étant pas installé, tu risques de retourner
n'importe quoi.


Le 9 me retourne les caractères accentués (et le zoulou aussi ;-)
En l'absence de la page de code sur le poste, on pourrait penser qu'il est
fait appel à la page par défaut, mais cela ne semble pas être le cas.
La page la plus proche peut-être.
Quoiqu'il en soit, il est clair qu'on ne peut pas s'appuyer sur cette
instruction (ça m'arrangeait pourtant...).

--
Tisane


Chacun fait ce qu'il veut mais pourquoi pas mettre 1077 à la place de 18 ?
Par défaut toutes les fonctions ayant une LCID en paramètres, prennent
l'ID
du paramètre régional par défaut et c'est bien normal. Pourquoi une seule
fonction irait chercher un autre langage qui de plus n'est peut-être pas
installé sur la machine ?
Il est normal aussi qu'en indiquant un code langage 9 par exemple, strconv
ne retourne pas de caractères accentués, ce qui est un minimum pour le
langage anglais, mais la fonction retournera-t-elle le bon caractère ? pas
du tout, car elle retournera le caractère correspondant au code langage
mais
ton code langage Zoulou n'étant pas installé, tu risques de retourner
n'importe quoi.
un peu de bon sens et de simplicité et tout ira bien.

En ce qui concerne la fonction, je viens de tester, ça marche très bien.
il
n'y a pas besoin d'indiquer public, car elle est dans un module, donc
public
par défaut.
j'ai testé:

Expr1: Majuscule(SupprimerAccents(Nz([LeNom];"")))
ou
UCase(SupprimerAccents(Nz([LeNom],""))) AS Expr1

le Nz n'est pas obligatoire mais préserve d'une valeur Nul qui n'est pas
testée dans la fonction.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office
!
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db

[...]


Avatar
seeber
Raymond,



Bonjour Tisane.

c'est bien la peine que Ducros se décarcasse !

tous les LanguageID sont sur mon site :
http://officesystem.access.free.fr/vba/langages_utilises.htm

Chacun fait ce qu'il veut mais pourquoi pas mettre 1077 à la place de 18 ?

Par défaut toutes les fonctions ayant une LCID en paramètres, prennent l'ID
du paramètre régional par défaut et c'est bien normal. Pourquoi une seule
fonction irait chercher un autre langage qui de plus n'est peut-être pas
installé sur la machine ?
Il est normal aussi qu'en indiquant un code langage 9 par exemple, strconv
ne retourne pas de caractères accentués, ce qui est un minimum pour le
langage anglais, mais la fonction retournera-t-elle le bon caractère ? pas
du tout, car elle retournera le caractère correspondant au code langage mais
ton code langage Zoulou n'étant pas installé, tu risques de retourner
n'importe quoi.
un peu de bon sens et de simplicité et tout ira bien.

En ce qui concerne la fonction, je viens de tester, ça marche très bien. il
n'y a pas besoin d'indiquer public, car elle est dans un module, donc public
par défaut.
j'ai testé:

Expr1: Majuscule(SupprimerAccents(Nz([LeNom];"")))
ou
UCase(SupprimerAccents(Nz([LeNom],""))) AS Expr1


J'ai tout fait comme tu dis mais toujours le même message d'erreur "Fonction
'Supprim..'non définie dans l'expression.
Je me pose la question si j'ai bien copié tout ce qui fallait dans le module!
Par exemple faut-il copié la ligne : "APPEL DE LA FONCTION" -->
<variable textee> = SupprimerAccents(<variable texte>)
Je ne suis vraiment perdu....car j'ai seulement copié les ligne sous
l'intitulé FONCTION et enregistré...
Merci Raymond pour aide, j'espère que je vais y arrivé :))




le Nz n'est pas obligatoire mais préserve d'une valeur Nul qui n'est pas
testée dans la fonction.
--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db




Avatar
Raymond [mvp]
ton module doit se présenter comme suit:

Option Compare Database
Option Explicit

Function SupprimerAccents(Texte As String) As String
Dim Position As Integer
Dim Caractère As String
For Position = 1 To Len(Texte)
Caractère = Mid(Texte, Position, 1)
Select Case Caractère
Case "á", "à", "â", "ä", "ã"
Caractère = "a"
Case "é", "è", "ê", "ë"
Caractère = "e"
Case "í", "ì", "î", "ï"
Caractère = "i"
Case "ó", "ò", "ô", "ö", "õ"
Caractère = "o"
Case "ú", "ù", "û", "ü"
Caractère = "u"
Case "ý", "ÿ"
Caractère = "y"
Case "ç"
Caractère = "c"
End Select
SupprimerAccents = SupprimerAccents & Caractère
Next Position
End Function


c'est tout.
le module de n'importe quel nom

--
@+
Raymond Access MVP http://www.OfficeSystemAccess.com/
http://officesystem.access.over-blog.com/
http://officesystem.access.free.fr/wiki/
Pour débuter sur le forum: http://www.mpfa.info/

Venez découvrir Open XML, le nouveau format de fichier de la suite Office !
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db


"seeber" a écrit dans le message de news:

| Raymond,
|
|
|
| > Bonjour Tisane.
| >
| > c'est bien la peine que Ducros se décarcasse !
| >
| > tous les LanguageID sont sur mon site :
| > http://officesystem.access.free.fr/vba/langages_utilises.htm
| >
| > Chacun fait ce qu'il veut mais pourquoi pas mettre 1077 à la place de 18
?
| >
| > Par défaut toutes les fonctions ayant une LCID en paramètres, prennent
l'ID
| > du paramètre régional par défaut et c'est bien normal. Pourquoi une
seule
| > fonction irait chercher un autre langage qui de plus n'est peut-être pas
| > installé sur la machine ?
| > Il est normal aussi qu'en indiquant un code langage 9 par exemple,
strconv
| > ne retourne pas de caractères accentués, ce qui est un minimum pour le
| > langage anglais, mais la fonction retournera-t-elle le bon caractère ?
pas
| > du tout, car elle retournera le caractère correspondant au code langage
mais
| > ton code langage Zoulou n'étant pas installé, tu risques de retourner
| > n'importe quoi.
| > un peu de bon sens et de simplicité et tout ira bien.
| >
| > En ce qui concerne la fonction, je viens de tester, ça marche très bien.
il
| > n'y a pas besoin d'indiquer public, car elle est dans un module, donc
public
| > par défaut.
| > j'ai testé:
| >
| > Expr1: Majuscule(SupprimerAccents(Nz([LeNom];"")))
| > ou
| > UCase(SupprimerAccents(Nz([LeNom],""))) AS Expr1
|
| J'ai tout fait comme tu dis mais toujours le même message d'erreur
"Fonction
| 'Supprim..'non définie dans l'expression.
| Je me pose la question si j'ai bien copié tout ce qui fallait dans le
module!
| Par exemple faut-il copié la ligne : "APPEL DE LA FONCTION" -->
| <variable textee> = SupprimerAccents(<variable texte>)
| Je ne suis vraiment perdu....car j'ai seulement copié les ligne sous
| l'intitulé FONCTION et enregistré...
| Merci Raymond pour aide, j'espère que je vais y arrivé :))
|
|
|
| >
| > le Nz n'est pas obligatoire mais préserve d'une valeur Nul qui n'est pas
| > testée dans la fonction.
| > --
| > @+
| > Raymond Access MVP http://www.OfficeSystemAccess.com/
| > http://officesystem.access.over-blog.com/
| > http://officesystem.access.free.fr/wiki/
| > Pour débuter sur le forum: http://www.mpfa.info/
| >
| > Venez découvrir Open XML, le nouveau format de fichier de la suite
Office !
| >
http://www.comscamp.com/Tracker/Redirect.ashx?linkidÿ71c7f3-78e8-4371-abaf-b73c259e58db
| >
| >
Avatar
seeber
OK!

La fonction marche super bien, ouf!!!!
J'ai seulement fait la bétise de nommer le module avec le même nom que la
fonction ;)
Un grand merci à vous tous et plus particulièrement à Raymond.
Bon continuation à toutes et à tous :)

Seeber :))))))))
1 2