En VBA je sais faire, mais une formula, je sais pas si c'est possible
de faire un remplacement caractères par caractères en se basant sur un
tableau de correspondance.
Merci de vos lumières.
--
Les assistés du CAC 40 :
http://www.youtube.com/watch?feature=player_detailpage&v=W5Yx_diRxA8#t=48
En VBA je sais faire, mais une formula, je sais pas si c'est possible de faire un remplacement caractères par caractères en se basant sur un tableau de correspondance.
On peut faire une formule matricielle :
{=SUBSTITUE(CAR(STXT(A1;{1.2.3.4.5.6.7.8.9.10};1)+64);"@";"J")} (validation matricielle en ligne CTRL+SHIFT+ENTER)
Explication: STXT va s'exécuter en série sur {1.2.3....10} et extraire ainsi les chiffres un par un, puis additionner 64 et renvoyer le caractère ASCII correspondant : 1 + 64 = 65 code ASCII de "A" etc.
sauf pour 0, qui doit être transformé en J (ASCII 74 = 10 + 64 ) d'où le SUBSTITUE dans la formule ci-dessus.
*PAR CONTRE* : on a le résultat dans un vecteur ligne. Et il n'existe pas (à ma connaissance) de fonction native Excel pour concaténer un vecteur.
Merci de vos lumières.
Pas d'quoi.
-- Les assistés du CAC 40 : http://www.youtube.com/watch?feature=player_detailpage&v=W5Yx_diRxA8#tH
Merci pour la vidéo !
Le 05/04/2014 21:44, Baton .rouge a écrit :
Bonjour
Comme rien n'est simple, je cherche une solution à un problème.
J'ai une colonne A avec dedant des nombres et une colonne B qui par
une table de conversion doit recevoir des lettres (1=A, 2=B, 3=C,...):
En VBA je sais faire, mais une formula, je sais pas si c'est possible
de faire un remplacement caractères par caractères en se basant sur un
tableau de correspondance.
On peut faire une formule matricielle :
{=SUBSTITUE(CAR(STXT(A1;{1.2.3.4.5.6.7.8.9.10};1)+64);"@";"J")}
(validation matricielle en ligne CTRL+SHIFT+ENTER)
Explication: STXT va s'exécuter en série sur {1.2.3....10} et extraire
ainsi les chiffres un par un, puis additionner 64 et renvoyer le
caractère ASCII correspondant :
1 + 64 = 65 code ASCII de "A" etc.
sauf pour 0, qui doit être transformé en J (ASCII 74 = 10 + 64 )
d'où le SUBSTITUE dans la formule ci-dessus.
*PAR CONTRE* : on a le résultat dans un vecteur ligne. Et il n'existe
pas (à ma connaissance) de fonction native Excel pour concaténer un
vecteur.
Merci de vos lumières.
Pas d'quoi.
--
Les assistés du CAC 40 :
http://www.youtube.com/watch?feature=player_detailpage&v=W5Yx_diRxA8#tH
En VBA je sais faire, mais une formula, je sais pas si c'est possible de faire un remplacement caractères par caractères en se basant sur un tableau de correspondance.
On peut faire une formule matricielle :
{=SUBSTITUE(CAR(STXT(A1;{1.2.3.4.5.6.7.8.9.10};1)+64);"@";"J")} (validation matricielle en ligne CTRL+SHIFT+ENTER)
Explication: STXT va s'exécuter en série sur {1.2.3....10} et extraire ainsi les chiffres un par un, puis additionner 64 et renvoyer le caractère ASCII correspondant : 1 + 64 = 65 code ASCII de "A" etc.
sauf pour 0, qui doit être transformé en J (ASCII 74 = 10 + 64 ) d'où le SUBSTITUE dans la formule ci-dessus.
*PAR CONTRE* : on a le résultat dans un vecteur ligne. Et il n'existe pas (à ma connaissance) de fonction native Excel pour concaténer un vecteur.
Merci de vos lumières.
Pas d'quoi.
-- Les assistés du CAC 40 : http://www.youtube.com/watch?feature=player_detailpage&v=W5Yx_diRxA8#tH