Question sur les caracteres alphabetiques

bonjour

une toute petite question sur les caractères alphabétiques , si je dispose d'un tableau de type array contenant les caractères

tab= array("ZA" , "GH" ," WS" , "J" , "KL") , et que je voudrait les comparer deux à deux , le fait d 'écrire par exemple :

if Lcase(tab(0))> Lcase(tab(1)) then

.... traitement ...

permet de comparer les positions de tab(0) et tab(1) , je voudrais comprendre en quoi cela est possible , puisque d’après mes connaissance Lcase( de quelque chose) permet de mettre en majuscule une chaine de caractères alphabétiques ?

Merci pour vos réponses

Bonjour

LCASE appliqué auX deux permet de considérer une version similaire de textes qui peuvent ne pas être dans la même casse

Cependant comparer des textes avec > ou < est très illogique et source d'erreur

Bonjour,

Peux tu préciser ce que tu entends par "comparer deux à deux" tes chaînes de caractères ? Quelle est la "sortie" attendue de ta comparaison ?

Bonjour

puisque d’après mes connaissance Lcase( de quelque chose) permet de mettre en majuscule une chaine de caractères alphabétiques ?

Non c'est le contraire

Lcase pour mettre en minuscule

Ucase pour mettre en majuscule

Faudrait connaitre le pourquoi de cette recherche et surtout pourquoi comparer du texte dans un ARRAY ... ?

Je verrais plutot ceci

tab= array("ZA" , "GH" ," WS" , "J" , "KL")

If Lcase(tab(0) = activecell.value then....

Cordialement

Merci pour vos réponses, J ai réussi à classer par ordre alphabétique les, éléments de mon tableau en utilisant cette comparaison mais ce que je voudrais comprendre c est pourquoi si j écris par exemple if Lcase(t(0)) >Lcase(t(1)) then... Il y a une comparaison de type arithmétique entre deux entiers alors que Lcase d une chaîne retourne cette chaîne en minuscule ?

RE

C'est pourquoi on te dit que comparer des chaînes avec > ou < n'est pas logique

Cela va utiliser le code Ascii de la 1ère lettre...

Re

En plus de ce que Chris dit...

Pour comprendre, dans la suite tab= array("ZA" , "GH" ," WS" , "J" , "KL")

Lcase(tab(0) renvoie "za"

Lcase(tab(1) renvoie "gh"

Si dans une feuille mettez ceci :

A1 = Code("za") --> cela vous renvoie la valeur 122 (tab(0))

A2 = Code("gh") --> cela vous renvoie la valeur 103 (tab(1))

Si vous faites, if Lcase(t(0)) >Lcase(t(1)) then -> cela revient à dire si A1 est plus grand que A2 ce qui est bien le cas puisque 122 > 103.

Si vous continuez dans votre feuille avec CODE pour les autres valeurs (A3 = ws, A4 =j, A5 = kl), cela vous donne une suite de nombres 122, 103, 119, 106, 107 et cela pour l'instruction Lcase car pour Ucase ce sera différent

Je ne sais pas si cela vous aide mais en gros c'est peut être ce qu'excel voit...

Cordialement

Merci pour cette réponse Dan et aussi à tout les autres participants , en clair voici ce que j'ai fait :

Sub CLASSEMENT_ordre_alphabetique()
tv = Array("T", "DE", "FG", "ZTU", "A", "IJO", "BC")
For u = 0 To UBound(tv) - 1
 For v = u + 1 To UBound(tv)
    If LCase(tv(u)) > LCase(tv(v)) Then
        a = tv(u)
        b = tv(v)
         tv(u) = b
         tv(v) = a
    End If
 Next
Next
 MsgBox Join(tv, " ")   'me retourne bien  "A" ,"BC" , "DE", "FG", "IJO", "T" ,"ZTU"   mes éléments sont bien classés
 End Sub

et je n'ai pas utilisé CODE

Re

et je n'ai pas utilisé CODE

Juste pour repréciser... Ce n'est pas dans une macro que je parlais d'utilise CODE mais bien dans votre feuille. Juste pour visualiser.

Comme m'avait dit mon ami Thierry Pourtier, le souci est de savoir ou de comprendre ce qu'excel voit ou comprend. Là... c'est l'inconnu.. enfin pour nous.

Cordialement

Merci pour cette réponse ,...en effet c'est mystérieux ! ....peut etre que Ucase et Lcase sont dotés de deux possibilités qui fonctionnent en arrière plan, si on demande le Lcase d'une chaine de caractère via un msgbox ou dans une cellule on aura la chaine en majuscule , par contre si on procède à une comparaison comme je l'ai fait dans mon code , le compilateur sera capable d'affecter des valeurs au membre de droite et au membre de gauche ...mais je dis ca de façon hypothétique ,

Bonjour… mots dits, maux subits

Acception globale* : les symboles de comparaison < ou > sont utilisés pour comparer les rangs des items d’une liste qu’ils soient numériques ou alphanumériques ; «plus petit ou plus grand» sont plus acceptés que «avant ou après» dans le premier type d’item. Dans le second cas ce sont les codes ASCII qui servent pour ce travail.

Ainsi, «="Zc">"zb"» retourne VRAI et «="Z8c">"z9b"» retourne FAUX et c’est on ne peut plus logique avec celle de l’acception globale.

Ici, LCase et UCase sont les sommets de l’iceberg, ce qui interpellent sans se demander ce qu’y a-t-il au fond ? Il ne vient pas à l’idée d’utiliser LCase(33), UCase(22) … et pourtant, on peut le faire sans ennui !

Petit test :que retournent «=MAJUSCULE("Zc")< MINUSCULE("ZC")» , « =MAJUSCULE("Z8b")< MINUSCULE("z9B")», «=MINUSCULE(33)> MAJUSCULE(32) » et «=36000>"36000"» ?

*Classer des items par type numérique, alphanumérique n’est pas Ranger par ordre numérique (plus petit-plus grand), alphabétique (avant-après) comme un dico !

Puisque c’est prévu dans Excel, il ne pas se prendre la tête (avec comprimés) pour utiliser < et > avec des textes alphanumériques.

Rechercher des sujets similaires à "question caracteres alphabetiques"