Voici la formule magique,
elle aussi validée matriciellement :
=somme((stxt(A1;ligne(indirect("1:"&nbcar(A1)));1)&"0e"&ligne(indirect("1:"&nbcar(A1))))%)
Le bloc ligne(indirect("1:"&nbcar(A1)))
est évalué ici en {1;2;3;4;5;6;7;8;9;10}.
Le bloc stxt(A1;ligne(indirect("1:"&nbcar(A1)));1)
vaut alors {"5";"1";"4";"6";"6";"3";"6";"7";"0";"8"}
Avec &"0e"en plus, on
obtient : {"50e";"10e";"40e";"60e";"60e";"30e";"60e";"70e";"00e";"80e"}
Le bloc ligne(indirect("1:"&nbcar(A1)))
vaut {1;2;3;4;5;6;7;8;9;10}.
A la fin, le « % »
permet de tout diviser par 100 puisque l’on avait multiplié par 10 au départ
en ajoutant un « 0 » avant le « e », et qu’un autre facteur
10 était arrivé grâce à l’exponentiation. Et voilà ! Le tour est joué…
Une fois de plus, nous
constatons que les formules matricielles servent à jouer dans la feuille de
calcul le même rôle que les boucles dans les macros.
Une macro-fonction pour réaliser le retournement…
En fait, ce que nous avons
fait à l’aide de nos géniales formules matricielles pouvait être réalisé à
l’aide d’une macro-fonction dont le code est constitué d’une ligne unique,
comme nous pouvons le voir dans la copie d’écran. La formule de B7 est alors
tout simplement =retourne(A1).
Remarque – La fonction
StrReverse du VBA est à la base du verlan :)
On obtient dans ce cas un
résultat sous forme de texte, comme avec la formule de Roberto. Si l’on avait
voulu obtenir le même résultat que le mien ou celui de Zoran, il faudrait une
macro-fonction un peu plus longue…
Bonjour, ma formule est moins élégante mais plus à ma portée. Je me contente de concatener le nombre en prenant d'abord le caractère en dernière position, recupéré avec LEN(A1)puis en avant dernière position avec LEN(A1)-1. J'ai fait ça 15 fois, qui limite aussi le retournement à des nombres de 15 positions. le IFERROR remplace la valeur par "rien" pour les nombres de longueur inférieur. Désolé mais mon Excel est en anglais:
RépondreSupprimer=VALUE(IFERROR(MID(A1;LEN(A1);1);"")&IFERROR(MID(A1;LEN(A1)-1;1);"")&IFERROR(MID(A1;LEN(A1)-2;1);"")&IFERROR(MID(A1;LEN(A1)-3;1);"")&IFERROR(MID(A1;LEN(A1)-4;1);"")&IFERROR(MID(A1;LEN(A1)-5;1);"")&IFERROR(MID(A1;LEN(A1)-6;1);"")&IFERROR(MID(A1;LEN(A1)-7;1);"")&IFERROR(MID(A1;LEN(A1)-8;1);"")&IFERROR(MID(A1;LEN(A1)-9;1);"")&IFERROR(MID(A1;LEN(A1)-10;1);"")&IFERROR(MID(A1;LEN(A1)-11;1);"")&IFERROR(MID(A1;LEN(A1)-12;1);"")&IFERROR(MID(A1;LEN(A1)-13;1);"")&IFERROR(MID(A1;LEN(A1)-14;1);"")&IFERROR(MID(A1;LEN(A1)-15;1);"")).
Cordialement.