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

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Un indice: voir du coté de Select Case par exemple
Ah, le côté joueur de Jean-Marie :p...
Pour gagner du temps (et de la paresse) sur les Maj/Min, il faudrait vérifier si, comme pour le latin, la différence entre l'ASCII de la Maj et de la Min est le même. Ainsi, en latin, A=065 & a=097, B=066 & b=098, donc si tu sais que tu est en minuscule par exemple, tu peux ne comparer que de 065 à 090 la majuscule (UCase) et en déduire la minuscule (+32)...
Pour savoir si tu est en majuscule, un petit test UCase(A)=A.
@ Jean-Marie : Pourquoi pas cette amélioration tout Maj ou tout Min, mais tu ne laisses plus le choix au respect du texte originel... Ou alors, il faudrait 2 booléens optionels, un pour dire si on veux changer la casse, le deuxième pour décider de la casse qu'on choisit ;). Ce qui donnerait quelque chose comme ça :
Code:
Function Encode(ATraduire As String, Optional Casse As Boolean, Optional TypeCasse As Boolean) 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 192 To 195, 224 To 227, 258, 259, 7840 To 7863
Lettre = "a"
Case 272
Lettre = "D"
Case 273
Lettre = "d"
Case 200 To 202, 232 To 234, 7864 To 7879
Lettre = "e"
Case 204, 205, 236, 237, 296, 297, 7880 To 7883
Lettre = "i"
Case 210 To 213, 217, 218, 242 To 245, 416, 417, 7884 To 7907
Lettre = "o"
Case 249, 250, 431, 432, 360, 361, 7908 To 7921
Lettre = "u"
Case 221, 253, 7922, 7923, 7925, 7927, 7929
Lettre = "y"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
If Casse Then
Select Case TypeCasse
Case True
Encode = UCase(Encode)
Case False
Encode = LCase(Encode)
End Select
End If
End Function
A + :cool:
 

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

RE


Bonjour JNP
Pour continuer dans le cote joueur ;)

stonda: sauras tu mettre les bons chiffres dans les bonnes Case :D ?

J'ai commencé , à toi de finir ...

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 192 To 195, 224 To 227, 258, 259, 7840, 7842, 7844, 7846, 7848, 7852, 7854, 7856, 7862
Lettre = "A"
Case 224 To 227, 258, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863
Lettre = "a"
Case 272
Lettre = "D"
Case 273
Lettre = "d"
Case 7864
Lettre = "E"
Case 200 To 202, 232 To 234
Lettre = "e"
Case 204, 205, 236, 237, 296, 297
Lettre = "i"
Case 210 To 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
Lettre = "O"
Case 217, 218, 242 To 245, 417
Lettre = "o"
Case 249, 250, 431, 432, 360, 361, 7908 To 7921
Lettre = "u"
Case 221, 253, 7922, 7923, 7925, 7927, 7929
Lettre = "y"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
End Function
PS: JNP: pour ce qui est de la casse (c'était histoire de tuer le temps en faisant mumuse avec VBA )
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Il doit y avoir une erreur Jean-Marie, tu as 2 fois 224 To 227, pour a et A ;)...
En pièce jointe, j'ai trié, contraposé, et en feuille 3, toutes les équivalences fournies sur le fichier de notre ami sont faites, il ne reste plus qu'à les rentrer, sauf si, comme je le pense, tu avais tout fini aussi Jean-Marie :p...
Bonne soirée :cool:
 

Pièces jointes

  • Viet.xls
    65.5 KB · Affichages: 78
  • Viet.xls
    65.5 KB · Affichages: 75
  • Viet.xls
    65.5 KB · Affichages: 74

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Oui c'est vrai Jean Marie, il y avait des erreurs !!!:mad:
Donc comme challenge il y avait, je l'ai relevé et j'ai sué sang et eau pour finir par faire ce que JNP avait fait en moitié moins de temps :)
Mais il semble que toutes les lettres ne sont pas présentes dans ton code ou me trompe je ?
Donc merci à tous les deux, ça sera super utile.
Pour revenir à ma question précédente, je cherchais s'il existait une fonction qui m'aurait donné directement dans la feuil2 le mot en majuscule ou en minuscule, au lieu de faire le tri manuellement !
Cdt
Didier
 

Pièces jointes

  • Vietbis.zip
    15.9 KB · Affichages: 36
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re

1)J'adore l'apprentissage par l'erreur.

2)
il ne reste plus qu'à les rentrer, sauf si, comme je le pense, tu avais tout fini aussi Jean-Marie
Non Mossieur JNP, je n'avais pas tout fini.
Il n'y a pas que les accents dans la vie!
Il y aussi les patates et les poireaux à éplucher...
Bref faire la tambouille (pour sa tite femme et bibi en en ce qui me concerne )

Et ca VBA sait pas encore le faire.


Si jamais des forumeurs en provenance d'Asie ont d'autres accents à se mettre sous la dent,
je te les envoie JNP :D

Moi je vais me mettre ma bouffetifaille sous la dent,accompagnée d'un Bergerac (cadeau d'un fournisseur)

stonda: la nonchalance finira par ne plus être supporté dans ce pays
(on commence par S. G. sur 93.5 et on sait pas ou cela finira )
Si cela arrive , viens me rejoindre au Vietnam (avec un Excel français sous le bras)

Mais il semble que toutes les lettres ne sont pas présentes dans ton code ou me trompe je ?
sauras-tu mettre les bons chiffres dans les bonnes Case :D ?
Cela semble explicite non ?
 
Dernière édition:

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Mais il semble que toutes les lettres ne sont pas présentes dans ton code ou me trompe je ?
Ca c'était pour JNP : dans son fichier il n'y avait, a priori, pas toutes les lettres. Pour le tien j'avais bien compris que tu voulais que je mouille un peu le maillot, ce que j'ai fait ! Même ton jeu de mots m'a fait sourire (jaune) c'est te dire !
Pratique le VBA, mais pas facile. Et puis ça supporte mal la nonchalance !
Et je ne sais toujours pas comment j'aurais pu lui faire deviner si la lettre d'origine était une majuscule ou une minuscule : sans doute avec un test basé sur Ucase () ?
Cdt
Didier
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 192 To 195, 258, 7840, 7842, 7844, 7846, 7848, 7852, 7854, 7856, 7862
Lettre = "A"
Case 224 To 227, 258, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863
Lettre = "a"
Case 272
Lettre = "D"
Case 273
Lettre = "d"
Case 200 To 202, 7864, 7868, 7870, 7872, 7876, 7878, 7866, 7874
Lettre = "E"
Case 232 To 234, 7869, 7871, 7873, 7877, 7867, 7875, 7865, 7879
Lettre = "e"
Case 236, 237, 297, 7881
Lettre = "i"
Case 204, 205, 296, 7880, 7882, 7883
Lettre = "I"
Case 210 To 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
Lettre = "O"
Case 242 To 245, 417, 7889, 7881, 7895, 7887, 7893, 7885, 7899, 7901, 7905, 7897, 7903, 7907, 7891
Lettre = "o"
Case 249, 250, 432, 361, 7909, 7911, 7913, 7915, 7919, 7921, 7887
Lettre = "u"
Case 217, 218, 431, 360, 7908, 7910, 7912, 7914, 7916, 7918, 7920
Lettre = "U"
Case 253, 7923, 7925, 7927, 7929
Lettre = "y"
Case 221, 7922
Lettre = "Y"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
End Function
 
Dernière édition:

polyme

XLDnaute Nouveau
Hello, voici ce que j'ai fait: J'ai créé une fonction LAMBDA dans le gestionnaire de noms (Attention version Excel 2016+) de nom REP car substitue est trop longue : =LAMBDA(TXT;X;Y;SUBSTITUE(TXT;X;Y))
Puis une fonction SansAccent : =LAMBDA(TXT;REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(TXT;"á";"a");"à";"a");"ä";"a");"â";"a");"é";"e");"è";"e");"ë";"e");"ê";"e");"í";"i");"ì";"i");"ï";"i");"î";"i");"ú";"u");"ù";"u");"ü";"u");"û";"u");"ó";"o");"ò";"o");"ö";"o");"ô";"o");"ç";"c");"ñ";"n"))

ça évite de faire du VBA.
 

polyme

XLDnaute Nouveau
Hello, voici ce que j'ai fait: J'ai créé une fonction LAMBDA dans le gestionnaire de noms (Attention version Excel 2016+) de nom REP car substitue est trop longue : =LAMBDA(TXT;X;Y;SUBSTITUE(TXT;X;Y))
Puis une fonction SansAccent : =LAMBDA(TXT;REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(REP(TXT;"á";"a");"à";"a");"ä";"a");"â";"a");"é";"e");"è";"e");"ë";"e");"ê";"e");"í";"i");"ì";"i");"ï";"i");"î";"i");"ú";"u");"ù";"u");"ü";"u");"û";"u");"ó";"o");"ò";"o");"ö";"o");"ô";"o");"ç";"c");"ñ";"n"))

ça évite de faire du VBA.
 

Phil69970

XLDnaute Barbatruc
Bonjour à tous

@polyme

Le post date de plus de 15 ans et le demandeur ne s'est pas connecté depuis 14 ans !!!

Fouille et .deterrage de post.gif

Il y plein de demande beaucoup plus récente pour aider ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 080
Messages
2 085 150
Membres
102 794
dernier inscrit
espinata