OVH Cloud OVH Cloud

Conversion en majuscules

4 réponses
Avatar
Nicolas
Bonjour,

Je souhaiterais convertir une chaine de caract=E8res=20
accentu=E9s en minuscule en chaine de caract=E8re non=20
accentu=E9s en majuscule.

Exemple :

=E0=EA=EE=F6=F9

donnerait

AEIOU

Il y'a bien la fonction UCASE mais elle donne =C0=CA=CE=D6=D9

Comment faire ?

Nicolas

4 réponses

Avatar
+The_Taco+
Je ne sais pas s'il existe une fonction qui fait exactement ce traitement.
Mais tu pourrais toujours faire (s'il existe rien de mieu) un InStr de ton
caractère rechercher, un Replace ensuite par qu'est-ce que tu veux et UCASE
ensuite....

"Nicolas" a écrit dans le message de
news:092301c3ba61$0b5b1b20$
Bonjour,

Je souhaiterais convertir une chaine de caractères
accentués en minuscule en chaine de caractère non
accentués en majuscule.

Exemple :

àêîöù

donnerait

AEIOU

Il y'a bien la fonction UCASE mais elle donne ÀÊÎÖÙ

Comment faire ?

Nicolas
Avatar
Zoury
Salut Nicolas! :O)

Je crois que tu devras te faire ta propre fonction.. tu devrais y parvenir
sans trop de problème en bouclant la chaine et en modifiant les caractères
un à un ou encore avec un série de Replace() imbriqué... la première
solution m'apparaît être de loin la plus lisible et je crois même qu'elle
serait plus rapide..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Nicolas" wrote in message
news:092301c3ba61$0b5b1b20$
Bonjour,

Je souhaiterais convertir une chaine de caractères
accentués en minuscule en chaine de caractère non
accentués en majuscule.

Exemple :

àêîöù

donnerait

AEIOU

Il y'a bien la fonction UCASE mais elle donne ÀÊÎÖÙ

Comment faire ?

Nicolas
Avatar
Patrice Henrio
Dans ce cas on peut même faire un tableau des 255 caractères avec leur
correspondance en majuscule non accentuée. En effet une fonction sur un
ensemble fini de N élément n'est rien d'autre qu'un tableau de N lignes et
deux colonnes (X et Y)

"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:%
Salut Nicolas! :O)

Je crois que tu devras te faire ta propre fonction.. tu devrais y parvenir
sans trop de problème en bouclant la chaine et en modifiant les caractères
un à un ou encore avec un série de Replace() imbriqué... la première
solution m'apparaît être de loin la plus lisible et je crois même qu'elle
serait plus rapide..

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
"Nicolas" wrote in message
news:092301c3ba61$0b5b1b20$
Bonjour,

Je souhaiterais convertir une chaine de caractères
accentués en minuscule en chaine de caractère non
accentués en majuscule.

Exemple :

àêîöù

donnerait

AEIOU

Il y'a bien la fonction UCASE mais elle donne ÀÊÎÖÙ

Comment faire ?

Nicolas




Avatar
Zoury
Oui en effet. Une Collection serait peut-être même plus rapide et mieux
adaptée pour le besoin (du moins côté manipulation dans le code...). La clé
pourrait être le caractère accentué et la valeur retourné l'équivalent non
accentué..

Exemple
'***
Option Explicit

Private m_colChars As Collection

Private Sub Form_Load()
Call InitChars
Debug.Print ToASCII("À quel heure souhaitez-vous manger? J'ai
extrêmement faim moi!")
End Sub

Private Function ToASCII(ByVal s As String) As String

Dim i As Long

If (LenB(s) > 0) Then
For i = 1 To Len(s)
Mid$(s, i, 1) = GetASCIIChar(Mid$(s, i, 1))
Next i
End If

ToASCII = s

End Function

Private Sub InitChars()

Set m_colChars = New Collection

' E
Call m_colChars.Add("E", "É")
Call m_colChars.Add("E", "È")
Call m_colChars.Add("E", "Ë")
Call m_colChars.Add("E", "Ê")

' A
Call m_colChars.Add("A", "À")
Call m_colChars.Add("A", "Ä")
Call m_colChars.Add("A", "Â")

' Continuez si vous chante... ;O)

End Sub

' renvoi l'équivalent ASCII du caractère passé selon
' le tableau de caractères initialisés
'
' Ex :
' à -> a
' À -> A
' Ê -> E
'
Private Function GetASCIIChar(ByRef sKey As String) As String
If (Not m_colChars Is Nothing) Then
On Error Resume Next
If (Asc(sKey) > 127) Then
GetASCIIChar = m_colChars(sKey)
If (sKey = LCase$(sKey)) Then
GetASCIIChar = LCase$(GetASCIIChar)
End If
Else
GetASCIIChar = sKey
End If
End If
End Function
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous