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

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour à tous

Tout cela m'a donné faim

Je dégusterai bien ce midi quelques nems et consorts
(au moins pas d'accents dans ces choses là)

Bravo à toi JNP, je fus trop pessimiste de prime abord

mais grâce à stonda et ton auguste personne , j'ai redécouvert AscW et ChrW

et cela suffit à mon bonheur du jour.
 

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Tout cela m'a donné faim
Je dégusterai bien ce midi quelques nems et consorts
(au moins pas d'accents dans ces choses là)
Etant plutôt "viandard", je me contenterai d'un petit gigot d'agneau (pascal) :p...
Version Jean-Pierre Koffe "il ne faut pas piquer le gigot avec de l'ail, mais le pommader", je m'en lèche déjà les babines :D...
Bon appétit, et impatient de voir la version de Didier complétée ;)...
A + :cool:
 

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bonsoir
J'espère que l'agneau était à la hauteur de tes envies.
J'ai essayé de rentrer quelques caractères mais sans grande réussite.
Cf fichier joint cellule A2 j'ai mis en rouge les caractères que je n'arrive pas à traduire.
Peut être suis je totalement simplet !
Merci
Didier
 

Pièces jointes

  • Viet.xls
    42 KB · Affichages: 96
  • Viet.xls
    42 KB · Affichages: 99
  • Viet.xls
    42 KB · Affichages: 99

JNP

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re :),
Peut être suis je totalement simplet !
J'irai pas jusque là, mais peut-être n'a tu pas suivi le mode d'emploi :p...
En feuille 2, tu as les formules pour trouver le code des caractères, il suffit de mettre 1 par 1 les caractères inconnus, et de récupérer le code (la 3° colonne sert de contrôle pour vérifier si le caractère est traduit).
Code:
[FONT=Calibri]ấ   [/FONT][FONT=Calibri]7845[/FONT]
[FONT=Calibri]à    [/FONT][FONT=Calibri]224[/FONT]
[FONT=Calibri]â    [/FONT][FONT=Calibri]226[/FONT]
[FONT=Calibri]ê    [/FONT][FONT=Calibri]234[/FONT]
[FONT=Calibri]ý    [/FONT][FONT=Calibri]253[/FONT]
puis il suffit d'intégrer le code ASCII dans la macro en conséquence
Code:
Select Case J
Case [COLOR=red][B]224,[/B][/COLOR] 225, [COLOR=red][B]226,[/B][/COLOR] 7841, 7843, [COLOR=red][B]7845,[/B][/COLOR] 7847, 7853
Lettre = "a"
Case 272
Lettre = "D"
Case 273
Lettre = "d"
Case 7869, 7871, 7873, 7875, 7879
Lettre = "e"
Case [COLOR=red][B]234,[/B][/COLOR] 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"
[COLOR=red][B]Case 253[/B][/COLOR]
[B][COLOR=red]Lettre = "y"[/COLOR][/B]
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
L'ordre des lettres et des codes n'a pas d'importance, ce qui compte, c'est Case 1, 2, 3 (cas où le code est 1, 2 ou 3, à séparer avec des ","), et Lettre = "A" (lettre de substitution). Mais je te conseille de conserver l'ordre alphabétique pour la substitution, et l'ordre des codes ASCII, ça facilitera les modifications successives du code. Tu as pu remarquer que j'ai séparé "d" et "D", je pense que tu pourras le faire pour toutes les lettres.
Donc 2 solutions :
Au cas par cas : à chaque fois qu'un nouveau caractère ne passe pas, tu l'ajoutes dans la macro.
L'exhaustif : tu prends la macro faite par Jean-Marie, tu gardes tous les caractères qui t'intéressent et tu les rentres dans la macro.
Bon courage :cool:
 

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour
Bon peut être pas simplet, mais totalement incompétent en Macro Excel !
Merci pour ta réponse, j'avais effectivement oublié de reporter les codes ASCII dans la macro de base !
Je pense que je vais utiliser la macro de Jean Marie pour trouver toutes les lettres accentuées de leur alphabet et le reporter ensuite. Manuellement c'est un peu long, j'ai 4200 lignes, avec pour certaines jusque 50 à 100 caractères !:(
Je vais vois si je ne peux pas récupérer auprès d'un vietnamien leur alphabet complet, sans doute plus simple et ppus exhaustif.
Je m'attache à ce travail en fin de semaine, je reviendrai de toute façon mettre le code final.
Merci à tous les deux pour votre aide :)
Didier
 

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour à tous



stonda
Tu as été voir ici ?
Qu?c ng? - Wikipédia

Pour ce qui concerne ma macro, attention car (voir ce qui est en rouge)
(issu de l'aide VBA d'excel)
Les nombres compris entre 0 et 31 sont identiques aux codes standard ASCII non imprimables. Par exemple, la fonction Chr(10) renvoie un caractère de saut de ligne. La valeur de l'argument charcode est normalement comprise entre 0 et 255. Toutefois, sur des systèmes DBCS, la valeur de l'argument charcode peut être comprise entre -32768 et 65535.
Note La fonction ChrB est utilisée pour traiter sous forme d'octets les données d'une valeur de type String. Au lieu de renvoyer un caractère codé sur un ou deux octets, la fonction ChrB renvoie toujours un seul octet. La fonction ChrW renvoie une valeur de type String contenant le caractère Unicode, sauf sur les plates-formes qui ne gèrent pas ce caractère. Dans ce cas, le comportement est le même que pour la fonction Chr.
Note Sur Macintosh, Visual Basic ne prend pas en charge les chaînes Unicode. Par conséquent, la fonction ChrW(n) ne peut pas renvoyer les caractères Unicode correspondant aux valeurs n comprises entre 128 et 65 535, comme elle le fait sous Windows. En revanche, la fonction ChrW(n) propose une valeur de son choix pour les valeurs n Unicode supérieures à 127. Il est donc recommandé de ne pas utiliser la fonction ChrW dans l'environnement Macintosh.
Donc il faut adapter en conséquence ici

Code:
Sub OU_SONT_MES_ACCENTS_AIE_MES_YEUX() [COLOR=Green]'adaptation partielle voir plus haut[/COLOR]
Dim i As Long
For i = 1 To 65535
Cells(i, 1) = ChrW(i)
Cells(i, 2) = i
Next
End Sub
Bon courage pour retrouver tes petits
 
Dernière édition:

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bonjour
Merci pour l'information.
A partir de ton lien j'ai fait d'autres recherches et je suis arrivé sur le ce lien ici
Vietnamese Standard Code for Information Interchange - Wikipédia dans lequel j'ai, a priori, l'intégralité de l'alphabet vietnamien.
Je l'ai mis dans le fichier excel, mais il me reste un problème, colonne 3 : je n'ai pas toute la correspondance avec notre alphabet par exemple
â 226 a
ã 227 ã
c'est OK pour le 226, pas pour le 227. Est ce normal ?
Cdt
Didier
 

Pièces jointes

  • Viet.zip
    15.2 KB · Affichages: 32

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

RE


Je ne suis pas sur que tu ais compris le fonctionnement du code de JN P

Il suffisait d'ajouter ce qui est en rouge

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 224, 225, 226, [COLOR=Red]227[/COLOR], 7841, 7843, 7847, 7853, 7845
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 253
Lettre = "y"
Case Else
Lettre = Mid(ATraduire, I, 1)
End Select
Encode = Encode & Lettre
Next I
End Function
 

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re

Voici une version avec un petit plus
formule à utiliser ainsi
=encode(A1;VRAI) renvoie la chaine en MAJUSCULE
=encode(A1) renvoie la chaine en minuscule
(équivalent à =encode(A1;FAUX) )


PS: formule testée sur ton classeur joint ( cela fonctionne )

PS2: As-tu compris comment fonctionne le code finalement ?

Merci à JNP qui a fait le gros oeuvre ;)
Code:
Function Encode(ATraduire As String, Optional Casse 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
Select Case Casse
Case True
Encode = UCase(Encode & Lettre)
Case False
Encode = LCase(Encode & Lettre)
End Select
Next I
End Function
 

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Oui j'ai bien compris (enfin je crois) : je détecte avec feuil2 les équivalent que je reporte ensuite dans la macro.
Mais pas compris le petit plus que tu asa jouté :
=encode(A1;VRAI) renvoie la chaine en MAJUSCULE
=encode(A1) renvoie la chaine en minuscule

Je met où ?
Mais dans la feuill2 il y a 3 colonnes : la première contient le caractère vietnamien, la seconde le code, la troisième le caractère en latin.
Donc ça fonctionne sur certains codes, pas sur tous : cf exemple que j'ai mis
â 226 a
ã 227 ã
Pour le reste oui je sais que je vais maintenant ajouter pour chaque lettre latine la valeur de ce qui se trouve en colonne 3
Cdt
Didier
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re

Tu remplaces (si tu le souhaites) la version de JNP de Encode
par la mienne

ensuite tu vas sur ta feuille 2

en D1:
tu saisis =encode(A1;VRAI) ety tu recopie vers le bas (jusqu'en D128)

et la tu verras qu'en colonne C
tu as les équivalent non accentuées de la colonne A
et en colonne D
tu as les équivalent non accentuées en MAJUSCULE de la colonne A.

PS: comme je le disais précédemment la fonction Encode (version modifiée) présente dans le message de 15h51 fonctionne.

Alors stp ne dis pas
Donc ça fonctionne sur certains codes, pas sur tous : cf exemple que j'ai mis
â 226 a
ã 227 ã

Cela va finir par m'énerver et je vais mal digérer ;)

(attention on dirait que tu repiques dans la nonchalance ...)
 
Dernière édition:

stonda

XLDnaute Nouveau
Re : Texte Minuscule en texte Majuscule sans accent

Bon c'est vrai que je m'étais peut être endormi ! mais bon essayer de comprendre des macros (et pour moi c'est du chinois) pour traduire des caractères vietnamiens, avoue que c'est pas évident ;)
Donc ça marche.
Tant que tu es un peu énervé, il n'y aurait pas un truc qui donne des majuscules quand le caractère est en majuscule et minuscule dans le cas contraire.
Mais là ce n'est plus de la nonchalance, c'est de la paresse de ma part !
Cordialement
Didier
 

Staple1600

XLDnaute Barbatruc
Re : Texte Minuscule en texte Majuscule sans accent

Re


Tant que tu es un peu énervé, il n'y aurait pas un truc qui donne des majuscules quand le caractère est en majuscule et minuscule dans le cas contraire.
Oui, il y a moyen de faire cela.


Mais comme tu le dis, toi-même, tu as compris comment fonctionne Encode non ?

Donc je te laisse un peu chercher avant que cela ne te tombe tout cuit dans le bec. :D
 
Dernière édition:

Discussions similaires

Réponses
9
Affichages
418