Convertir Minuscules en majuscules sans accent

S

Super Rattata

Guest
Bonjour,

Je voudrais convertir le mot méchant en MECHANT.

Le probleme, lorsque j'utilise la fonction Ucase, le mot devient MECHANT avec un accent sur le E. Et moi je le ve pas cet accent...

Quelqu'un connait une formule ou fonction pour arriver à mes fins ?

Merci d'avance

Super Rattata
 

SneakyZEKE

XLDnaute Nouveau
Re : Re: Convertir Minuscules en majuscules sans accent

un petit test supplémentaire dans ma fonction pour que ça aille plus vite en cas de chaîne vide :

Function MajSansAccent$(ByVal Chaine$)
'Ti
Const VAccent = "àáâãäåéêëèìíîïðòóôõöùúûü", VSsAccent = "aaaaaaeeeeiiiioooooouuuu"
Dim Bcle&
If Len(Chaine) > 0 Then
For Bcle = 1 To Len(VAccent)
Chaine = Replace(Chaine, Mid(VAccent, Bcle, 1), Mid(VSsAccent, Bcle, 1))
Next Bcle
MajSansAccent = UCase(Chaine)
End If
End Function

Mais, comme toi Thierry, je me demande s'il n'est pas possible de faire directement en utilisant certaines options dans les fonctions intégrées de conversion de VB, mais c'était plus facile et plus rapide d'écrire la fonction que de fouiller dans l'aide...

Je rajouterai même le "ç" qui faisait planter ma fonction de recherche ! Grâce à ce petit bout de code très simple et astucieux mes recherches ne plantent plus...merci Ti !
 

Gellimac

XLDnaute Nouveau
Re : Re: Convertir Minuscules en majuscules sans accent

Bonjour,

Désolé pour le déterrage de topic mais j'ai une question sur cette formule :


Function Sans_Accent(Ori As String) As String
Dim Compteur As Integer, Compteur2 As Integer
Dim Tab_Car_Accent, Tab_Car, Chaine_Test As String
Tab_Car_Accent = Array("á", "à", "â", "ä", "ã", "å", "é", "è", "ê", "ë", "í", "ì", "î", "ï", "ó", "ò", "ô", "ö", "õ", "ð", "ú", "ù", "û", "ü", "ÿ", "ý", "ç")
Tab_Car = Array("a", "a", "a", "a", "a", "a", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y", "c")
For Compteur = 1 To Len(Ori)
If Asc(Mid$(Ori, Compteur, 1)) > 223 Then
Chaine_Test = Mid$(Ori, Compteur, 1)
For Compteur2 = LBound(Tab_Car) To UBound(Tab_Car)
If Chaine_Test = Tab_Car_Accent(Compteur2) Then Chaine_Test = Tab_Car(Compteur2): Exit For
Next Compteur2
Ori = Left(Ori, Compteur - 1) & Chaine_Test & Right(Ori, Len(Ori) - Compteur)
End If
Next Compteur
Sans_Accent = UCase(Ori)
End Function



Si je veux que ca fasse la même chose mais que les majuscules soit remplacé par des minuscules, que faut t'il changer?
Je ne m'y connais pas très bien en VBA.

Merci d'avance
 

f4casper

XLDnaute Nouveau
Re : Convertir Minuscules en majuscules sans accent

Bonjour a tous et toutes

Je déterre un vieux sujet avec une question surment simpliste mais comment puis je simplement appliquer cette fonction a l'ensemble d'une feuille Excel !?
Je dois créer un macro qui fait un select du range et qui appel cette fonction ?

Dsl pour la question :eek:
 

f4casper

XLDnaute Nouveau
Re : Convertir Minuscules en majuscules sans accent

je parle de celle ci :

Function MajSansAccent$(ByVal Chaine$)
'Ti
Const VAccent = "àáâãäåéêëèìíîïðòóôõöùúûü", VSsAccent = "aaaaaaeeeeiiiioooooouuuu"
Dim Bcle&
If Len(Chaine) > 0 Then
For Bcle = 1 To Len(VAccent)
Chaine = Replace(Chaine, Mid(VAccent, Bcle, 1), Mid(VSsAccent, Bcle, 1))
Next Bcle
MajSansAccent = UCase(Chaine)
End If
End Function
 

paoloadv

XLDnaute Nouveau
Re : Re: Convertir Minuscules en majuscules sans accent

Bonjour Super rattata, le forum,
Il existe deux formules (du moins deux que je connaisse ;-) ) :
=MAJUSCULE(ta cellule) et =MINUSCULE(ta cellule)
J'espère que ça t'aideras.
@+ Franck

Bonjour,
Les fonctions MAJUSCULE et MINUSCULE ne changent que la case du texte. Ce que je propose, sans passer par une macro VBA (cela peut en gêner les utilisateur du fichier Excel, obligés d'activer les macros à l'ouverture du fichier...) est une solution de formulation un peu longue mais qui fonctionne. Je ne l'ai appliquée ici que sur la recherche de la première occurrence des lettres accentuées suivantes : é, è, ï. Mais on peut élargir la formule pour tout généraliser. Ps: La traduction est prise sur le texte en cellule B1.
A bon entendeur... ;)
Code:
=MAJUSCULE(SI(ESTERR(TROUVE("é";B1));SI(ESTERR(TROUVE("è";B1));SI(ESTERR(TROUVE("ï";B1));B1;REMPLACER(B1;TROUVE("ï";B1);1;"i"));REMPLACER(B1;TROUVE("è";B1);1;"e"));REMPLACER(B1;TROUVE("é";B1);1;"e")))
 
Dernière modification par un modérateur:

job75

XLDnaute Barbatruc
Re : Convertir Minuscules en majuscules sans accent

Bonjour paoloadv, bienvenue sur XLD,

Vous ne connaissez pas la fonction SUBSTITUE ? C'est quand même plus simple :

Code:
=MAJUSCULE(SUBSTITUE(SUBSTITUE(SUBSTITUE(B1;"é";"e");"è";"e");"ï";"i"))
Notez que sur Excel 2003 et versions antérieures on ne peut pas dépasser 8 imbrications de fonctions.

A partir d'Excel 2007 plus de problème.

A+
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Convertir Minuscules en majuscules sans accent

Bonjour le fil

Ci dessous une fonction qui utilise le code ASCII
Code:
Function SansAccent(DONNEE As String, Majuscule As Boolean) As String
Dim I1 As Byte, Carac As Integer, I As Integer, Trouve As String

For I = 1 To Len(DONNEE)
    Carac = Asc(Mid(DONNEE, I, 1))
    If Carac > 223 Then
    Select Case Carac
        Case 224 To 229 'a
            Trouve = "a"
        Case 232 To 235
            Trouve = "e"
        Case 240 To 246
            Trouve = "o"
        Case 249 To 252
            Trouve = "u"
        Case 236 To 239
            Trouve = "i"
        Case 253
            Trouve = "y"
        Case 231
             Trouve = "c"
    End Select
        If Trouve <> "" Then DONNEE = Replace(DONNEE, Chr(Carac), Trouve)
        Trouve = ""
    End If
Next I
If Majuscule = True Then
    SansAccent = UCase(DONNEE)
Else
    SansAccent = DONNEE
End If
    
End Function

A tester

Bonne journée

JP
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou