• Initiateur de la discussion Initiateur de la discussion Mapat
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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

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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
3 K
Retour