Traduire un môt en chiffre

Résolu
jps.forum -  
 jps.forum -
Bonjour
Comment lire un nom dans une cellule, en prenant chaque lettre une à une , et attribuer dans une autre cellule un nombre numérique ( chaque chiffre correspond a une lettre )
Exemple: en C17 j'ai BILLARD le résultat en C18 est 1455172
Critère de correspondance des lettres / chiffres:
A ou B = 1
C " D = 2
E"F = 3
G"H"I = 4
J"K"L = 5
M"N"O = 6
P"Q"R = 7
S"T = 8
U"V"W = 9
X"Y"Z = 0
J'arrive à faire la correspondance avec une seule lettre par cellule.
Merci de votre aide
A voir également:

4 réponses

pilas31 Messages postés 1878 Statut Contributeur 647
 
Bonjour,

Une solution un peu "simpliste" à partir de la fonction SUBSTITUE. Un exemple ici :

http://www.cijoint.fr/cjlink.php?file=cj200912/cijKyb1bxP.xls

Il faut afficher les colonnes masquées pour comprendre le fonctionnement.

Il y a peut-être une solution matricielle mais je n'ai pas trouvé

A+

EDIT : il y a des macros dans mon exemple, ne pas en tenir compte, elles ne servent pas se sont des résidus d'essais...
0
jps.forum
 
Merci pour la réponse mais je n'arrive pas a ouvrir ton exemple.
0
JvDo Messages postés 2012 Statut Membre 859
 
Bonjour et merci,

je n'ai toujours pas trouvé comment concaténer en matriciel sans passer par MCONCAT.
Je ne crois pas que Morefunc soit porté sur 2007. Donc ça peut devenir problématique.

En plus, le comportement de certaines fonctions est "conflictuel ou curieux" en matriciel. C'est pour cela que je me suis rabattu sur CHOISIR().
Par exemple, =SOMMEPROD((INDEX($B$1:$B$26;CODE(STXT($F$2;LIGNE(INDIRECT("1:"&NBCAR(DROITE($F$2;15))));1))-64))*(10^(NBCAR(DROITE($F$2;15))-LIGNE(INDIRECT("1:"&NBCAR(DROITE($F$2;15))))))) qui fournit une solution a priori équivalente à la 1ère proposition en s'appuyant sur une table de transcodage en A1:B26, ne fonctionne pas lorsque cette formule est dans une seule cellule. En revanche, si on l'inscrit dans une matrice d'au moins 2 cellules, elle fonctionne et répète le bon résultat dans chaque cellule.
Pour moi c'est une énigme.

cordialement
0
jps.forum
 
Bonsoir a vous tous

Merci de vos réponses, j'ai également ouvert une autre discutions sur un autre forum
je vous invite a regarder les réponses sur le lien ci-dessous.
La communauté d'entre-aide est vraiment fabuleuse!!!!!!
Encore merci d'avoir participé a cette discutions


http://www.veriti.net/forum2/viewtopic.php?f=1&t=2447&p=16218#p16218
0
JvDo Messages postés 2012 Statut Membre 859
 
Bonsoir,

si le mot à convertir est en F2 et en MAJUSCULES :

1ère proposition : (limitée à 15 caractères pour cause de conversion numérique)
=SOMMEPROD(CHOISIR(CODE(STXT($F$2;LIGNE(INDIRECT("1:"&NBCAR($F$2)));1))-64;1;1;2;2;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8;8;9;9;9;0;0;0)*(10^(NBCAR($F$2)-LIGNE(INDIRECT("1:"&NBCAR($F$2))))))
validation par CTRL+MAJ+ENTER

2ème proposition : (limitée à 255 caractères)
utiliser la fonction MCONCAT de la bibliothèque MOREFUNC de Laurent Longre.
=MCONCAT(CHOISIR(CODE(STXT($F$2;LIGNE(INDIRECT("1:"&NBCAR($F$2)));1))-64;1;1;2;2;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8;8;9;9;9;0;0;0))
validation par CTRL+MAJ+ENTER

3ème proposition : (limitée à 30 caractères, numérique "amélioré")
=SI(ET(NBCAR($F$2)>15;NBCAR($F$2)<30);SOMMEPROD(CHOISIR(CODE(STXT(GAUCHE($F$2;NBCAR($F$2)-15);LIGNE(INDIRECT("1:"&NBCAR($F$2)-15));1))-64;1;1;2;2;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8;8;9;9;9;0;0;0)*(10^(NBCAR($F$2)-15-LIGNE(INDIRECT("1:"&NBCAR($F$2)-15)))))&"";"")&SOMMEPROD(CHOISIR(CODE(STXT(DROITE($F$2;15);LIGNE(INDIRECT("1:"&NBCAR(DROITE($F$2;15))));1))-64;1;1;2;2;3;3;4;4;4;5;5;5;6;6;6;7;7;7;8;8;9;9;9;0;0;0)*(10^(NBCAR(DROITE($F$2;15))-LIGNE(INDIRECT("1:"&NBCAR(DROITE($F$2;15)))))))&""
ation par CTRL+MAJ+ENTER

En dehors des formules, il y a toutes les possibilités de VBA.

cordialement
-1
pilas31 Messages postés 1878 Statut Contributeur 647
 
Bravo,

Magnifique solution matricielle j'avais séché sur le sujet ....

A+
0