Texte Minuscule en texte Majuscule sans accent

Hervé_88

XLDnaute Nouveau
Bonjour à tous,

Je cherche à transformer un texte minuscule avec accent en texte majuscule sans accent???

j'ai bien trouvé la première étape en utilisant le formule "MAJUSCULE", pour suprimer les accent je n'ai pas trouvé.

Merci d'avance pour votre aide sur le sujet.

PS: ci-joint fichier

Cdt,
Hervé
 

Pièces jointes

  • Classeur1.xls
    14 KB · Affichages: 694
  • Classeur1.xls
    14 KB · Affichages: 735
  • Classeur1.xls
    14 KB · Affichages: 742

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bon Ok j'avais conservé les deux !
Ceci étant d'après le post de 11h26 je pensais qu'il fallait mettre qq chose dans le module 1 et ton code dans feuil1
Donc j'ai supprimé le module.
J'ai conservé ton code dans feuil1
Toujours le même problème il supprime bien les accents français (voir la cellule en jaune), mais ne veux pas que je rentre d'accents vietnamiens dans le code :
Le ếđóửừ
donne ?????
codeA = "ÉÈÊËÔéèêëàâäçôöûüùïî?????"
codeB = "EEEEOeeeeaaacoouuuiiedouu"

Si tu rentres ces valeurs là de ton coté, est ce que le code les accepte ou les remplace par des ?
Cdt
Didier
 

Pièces jointes

  • Vietnam.xls
    23 KB · Affichages: 94
  • Vietnam.xls
    23 KB · Affichages: 98
  • Vietnam.xls
    23 KB · Affichages: 96

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re


C'est le contraire que je te suggérai de faire

Supprimer le code dans la feuille 1 et garder le code du module.

Je vais finir par me lasser de ta nonchalance :rolleyes:

Tu n'as pas été lire le lien que je t'indiquais à 14h38...
 
Dernière édition:

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Ok mais à 14h38 tu me dis de lire et appliquer celui de 11h26. Et dans celui de 11h26 il me semblait qu'il fallait ajouter le module et le feuil1.
Je suis aussi allé lire le lien sur le codage vietnamien : j'avais l'impression que c'était écrit en hébreux ! Commet puis je utiliser ça dans la résolution de mon problème ?
Donc j'ai mis ma nonchalance de coté :cool:et j'ai supprimé le code feuil1, puis ajouter le code du module Sub supp_accents(), que le lance avec le menu macro > exécuter.
Pas problème pour les accents français.

Mais si je veux ajouter des accents vietnamiens dans le code A, ils se transforment en ??
codeA = "ÉÈÊËÔéèêëàâäçôöûüùïî??"
codeB = "EEEEOeeeeaaacoouuuiiea"

Si tu essaies avec mon tetxe en vietnamien, ça donne quoi ?
Merci
Didier
 

Pièces jointes

  • Vietnam1.xls
    24.5 KB · Affichages: 76
  • Vietnam1.xls
    24.5 KB · Affichages: 77
  • Vietnam1.xls
    24.5 KB · Affichages: 70
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour

EDITION
: je viens de songer à ChrW
mais là il va falloir s'armer de courage

Testes cette petite macro, et dis moi si tu retrouves tes petits
Code:
Sub OU_SONT_MES_ACCENTS()
Dim i As Long
For i = 1 To 1234
Cells(i, 1) = ChrW(i)
Cells(i, 2) = i
Next
End Sub
Tout est dit ici pourtant
(issu du lien cité hier à 14h38)
Il y a deux méthodes qu'on utilise souvent pour coder le vietnamien. Dans la première méthode, les caractères de base et les accents sont affichés comme des caractères simples de l'alphabet (Â , Ê , Ô. , etc). Par contre, on utilise dans la deuxième méthode des marques d'accent flottant. En ce cas, la composition des caractères vietnamiens est réalisée plutôt par le logiciel que le système de codage. En effet, un caractère spécial est représenté par deux octets dont l'un pour le caractère de base et l'autre pour l'accent ( Ô = O+ ^ ).
Après cela, on voit que la chose va se révéler compliquée à mettre en œuvre...

Je te remets 2 liens pour le coup lourd à digérer
RFC 1456 (rfc1456) - Conventions for Encoding the Vietnamese Language VISC (anglophone)

CP1258 - Wikipédia (francophone)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re


Voici une version qui te simplifiera tes recherches
(c'est mon kdo de Paques :D )

Code:
Sub OU_SONT_MES_ACCENTS_v2()
Dim i As Long
Application.ScreenUpdating = False
For i = 1 To 1234
Select Case i
Case 1 To 27, 33 To 38, 40 To 126, 161 To 383, 399, 402, 416, 431, 432, 461 To 476, 506 To 511, 593, 601, 609, 710 To 720, 728 To 733, 832, 833, 894, 900 To 974, 1025 To 1119, 1168 To 1181, 1186, 1187, 1198 To 1203, 1208 To 1211
Cells(i, 1) = ChrW(i)
Cells(i, 2) = i
End Select
Next
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Application.ScreenUpdating = True
End Sub
enfin peut être ici ton salut tu trouveras
Convert Vietnamese documents in legacy encoding to Unicode using UnicodeConverter

PS: toutes ces infos (sauf les macros) sont issues de recherches rapides faites sur le net
entre hier et aujourd'hui.
Recherches que tu avais le loisir toi aussi d'effectuer.
Donc je trouve le terme de nonchalance finalement approprié. :D
(Mais heureusement on voit que tu as cherché sur le forum (ça j'applaudis) puisque que tu as ressorti ce vieux fil, alors je parlerai de nonchalance épisodique)
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Salut le fil :),
Pour accélérer la chose, une petite macro sur le fichier comprenant du vietnamien
Code:
Sub test()
Dim I As Integer, MaString As String, J As Integer
I = 1
While Cells(I, 1) <> ""
MaString = Cells(I, 1)
For J = 1 To Len(MaString)
Cells(I, 2) = Mid(MaString, J, 1)
Cells(I, 3) = AscW(Mid(MaString, J, 1))
I = I + 1
Next J
Wend
End Sub
après suppression des doublons et des caractères traditionnels me donnent
á 225
đ 273
ơ 417
ư 432
7841
7853
7869
ế 7871
7873
7875
7883
7895
7897
7907
7911
7915
7921
Mais après, je bloque un peu :eek:...
A + :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour JNP (joyeuses Paques )

Par coquetterie, je m'étais arrêté à 1234

Merci d'avoir pris le relais.

Peut-être pour la suite
deux tableaux :
contenant les valeurs "AscW" des caractères accentués
l'autre les valeurs des caractères non accentués
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re

Finalement j'ai penché pour l'approche suivante
(merci à JNP d'avoir réveillé mes neurones)

Code:
Sub STAPLE_ET_JNP_AU_VIETNAM()
Dim i, aa$, sa$
aa = "02250273041704327841785378697871787378757883789578977907791179157921"
sa = "00970100011101170097009701010101010101010105011101110111011701170117"
For i = 1 To Len(aa) Step 4
Cells(i, 1) = ChrW(CLng(Mid(aa, i, 4)))
Cells(i, 2) = Chr(Mid(sa, i, 4))
Next
Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

On tient le bon bout JNP, qu'en penses-tu ?

PS: ou est stonda ?
 

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Le bon bout, pas évident...
Si tu sélectionnes une cellule avec du vietnamien et que tu fait un bête
Code:
MsgBox Selection
tu t'aperçois que les caractères spéciaux sont transformés en "?" :eek:... J'arrive pas à ce qu'ils restent dans la chaine de caractère pour les transformer à la volée...
Dès qu'ils passent par VBA, fini... Et même avec Characters, j'ai pas réussi à les identifier dans la cellule...
A + :cool:
 

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
J'y perds mon latin :eek:...
Code:
Function Encode(ATraduire As String)
Dim I As Integer, Lettre As String, J As Integer
For I = 1 To Len(ATraduire)
J = AscW(Mid(ATraduire, I, 1))
'MsgBox J
Select Case J
Case 225, 7841, 7853
Lettre = "a"
Case 273
Lettre = "d"
Case 7869, 7871, 7873, 7875
Lettre = "e"
Case 7883
Lettre = "i"
Case 417, 7895, 7897, 7907
Lettre = "o"
Case 432, 7911, 7915, 7921
Lettre = "u"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
End Function
devrait marcher. Si tu enlèves la ' devant le Msgbox, tu verras que la valeur renvoyée est bien dans les select case, mais elle n'est pas utilisée :confused:...
Le pire, c'est que le résultat comprends tous les caractères spéciaux de départ, au secours :eek:!!!
A + :cool:
 

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour
Je n'étais pas loin, juste parti chercher les oeufs en chocolat dans le jardin !
Doc j'avais bien lu ton lien Staple, qui m'a fait comprendre que ce ne serait pas facile.
J'ai essayé les différentes propositions, et pour l'instant j'avoue ne pas avoir trouvé comment résoudre mon problème.
Vais je devoir utiliser la basique fonction remplacer d'Excel ?
Si le sujet continue de passionner n'hésitez pas je suis preneur !
Merci par avance
Didier
 

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Non ça ne fonctionne pas correctement.
Je te joins le résultat.
peux tu m'envoyer le fichier que tu obtiens ?
Merci
 

Pièces jointes

  • Vietnam1.xls
    23 KB · Affichages: 65
  • Vietnam1.xls
    23 KB · Affichages: 63
  • Vietnam1.xls
    23 KB · Affichages: 69

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Non ça ne fonctionne pas correctement.
Je te joins le résultat.
Il falllait la déclencher sur une feuille vierge ;)...
Staple1600 à dit:
Chez moi ma macro de 12h10 fonctionne correctement. Pas chez vous ??
Bien sûr que si, Jean-Marie, mais elle établit simplement le tableau de conversion, après, comment faire le remplacement ?
Je crois que j'ai trouvé mon problème...
A tout de suite :cool:
 

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Ça y est, j'ai retrouvé mon latin :p...
J'avais du merder dans les doublons, et comme les caractères se ressemble tous...
Pour notre ami, une petite fonction
Code:
Function Unicode(Lettre As String) As Integer
Unicode = AscW(Lettre)
End Function
que j'ai utilisé en feuille 2, ce qui permet de récupérer le code ASCII Unicode des caractères à la ... :D.
Puis une autre fonction pour traiter les accents à la volée
Code:
Function Encode(ATraduire As String) As String
Dim I As Integer, Lettre As String, J As Integer
Application.Volatile
For I = 1 To Len(ATraduire)
J = AscW(Mid(ATraduire, I, 1))
Select Case J
Case 225, 7841, 7843, 7847, 7853
Lettre = "a"
Case 272
Lettre = "D"
Case 273
Lettre = "d"
Case 7869, 7871, 7873, 7875, 7879
Lettre = "e"
Case 237, 7883
Lettre = "i"
Case 243, 417, 7885, 7893, 7895, 7897, 7903, 7907
Lettre = "o"
Case 250, 432, 7889, 7909, 7911, 7915, 7917, 7921
Lettre = "u"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
End Function
qu'il faudra compléter au fur et à mesure.
En pièce jointe, la preuve que ça marche ;).
Quand notre ami aura traité tous les cas de figure, il pourra nous mettre la fonction finale, ça peut toujours servir à quelqu'un d'autre :)...
Bon lundi pascal :cool:
 

Pièces jointes

  • Viet.xls
    46.5 KB · Affichages: 80
  • Viet.xls
    46.5 KB · Affichages: 84
  • Viet.xls
    46.5 KB · Affichages: 85

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 116
dernier inscrit
kutobi87