Valeur des lettres

Mapat

XLDnaute Occasionnel
Bonjour

Je m'amuse à compter la valeur de ce que peut représenter un mot par rapport à la position
des lettres qui le composent dans l'alphabet. A =1, B= 2 , Z = 26
J'arrive à calculer cette valeur mais en écrivant ce mot lettre par lettre cellule par cellule
Serait-il possible de calculer cette valeur mais en écrivant le mot complet dans une seule cellule
Voir PJ
Merci et bonne journée
 

Pièces jointes

  • Valeur des lettres.xlsx
    9.3 KB · Affichages: 8

Mapat

XLDnaute Occasionnel
Re
Evidemment ça parait simple
Si peu de lignes pour un beau résultat
Pourrais-tu, si tu as 2 minutes, commenter le code
Je ne sais pas programmer mais c'est toujours intéressant d'essayer de comprendre
Merci et cordialement
 

Mapat

XLDnaute Occasionnel
Re

Merci bien pour ce code avec les commentaires.
C'est intéressant aussi avec formule mais c'est vrai que si il y a un espace, le résultat n'est pas bon
Je prends quand même
Merci à vous deux
Bien cordialement
 

eriiic

XLDnaute Barbatruc
Tout dépend si l'on doit prendre en compte les espaces, les chiffres, les caractères spéciaux, etc....
S'il y a des espaces ce n'est plus UN mot ;-) Je n'avais pas ouvert le fichier...
Sinon il y a Substitue() pour éliminer/remplacer des caractères :
Code:
=SOMMEPROD(CODE(STXT(SUBSTITUE(MAJUSCULE(A2);" ";"");LIGNE(INDIRECT("$1:$"&NBCAR(SUBSTITUE(A2;" ";""))));1))-64)
eric
 

job75

XLDnaute Barbatruc
Bonsoir Mapat, Efgé, eriiiic,

Cette fonction VBA ne comptabilise que les lettres de l'alphabet :
VB:
Dim a 'mémorise la variable

Function SommeLettres&(t)
Dim i%
t = UCase(t) 'majuscules
If Not IsArray(a) Then 'bloc calculé une seule fois pour gagner du temps
    ReDim a(1 To 255)
    For i = 1 To 26
        a(i + 64) = i
    Next
End If
For i = 1 To Len(t)
    SommeLettres = SommeLettres + a(Asc(Mid(t, i, 1)))
Next
End Function
Bonne nuit.
 

Pièces jointes

  • Valeur des lettres VBA(1).xlsm
    21.5 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour Mapat, Efgé, eriiiic,

Une solution par formule dans le fichier joint :
Code:
=SOMMEPROD((MatCode-64)*(MatCode>64)*(MatCode<91))
J'ai testé en recopiant le tableau A2:B5 sur 100 000 lignes, durée du recalcul chez moi :

- ce fichier => 2,4 secondes

- fichier du post #12 => 1,2 seconde, la fonction VBA est 2 fois plus rapide.

A+
 

Pièces jointes

  • Valeur des lettres(1).xlsx
    15.7 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
312 185
Messages
2 086 010
Membres
103 090
dernier inscrit
Createlier