Retournement d’un nombre
Le problème à résoudre
aujourd’hui est très simple à formuler, mais bien complexe à réaliser sans
macro. Vous devez obtenir en B1 un
nombre obtenu en retournant les chiffres du nombre inscrit en A1.
Voici la formule miracle
proposée par mon ami Roberto Mensa, saisie en B1 :
=texte(somme((stxt(A1;ligne(1:15);1)&0)%*10^ligne(1:15));rept(0;nbcar(A1)))
Et voici la formule
simplifiée que je propose en B3 :
=somme((stxt(A1;ligne(1:15);1)&0)%*10^ligne(1:15))
Ces
deux formules sont matricielles, donc validées avec [Ctrl]-[Maj]-[Entrée], et
supposent qu’il y a au maximum 15 chiffres dans le nombre à retourner.
Décortiquons
la formule de Roberto pour mieux la comprendre : stxt(A1;ligne(1:15);1)
donne
{"5";"1";"4";"6";"6";"3";"6";"7";"0";"8";"";"";"";"";""}
Avec le bloc (stxt(A1;ligne(1:15);1)&0)%,
nous obtenons :
{0,5;0,1;0,4;0,6;0,6;0,3;0,6;0,7;0;0,8;0;0;0;0;0}
Remarque 1 – Notez l’astuce
consistant à ajouter un « 0 » à la fin pour que les éléments vides
deviennent des valeurs, et l’ajout du « % » pour tout diviser par 100.
Après l’opération, le produit
par 10^ligne(1:15), qui vaut ici {10;100;1000;10000;
100000; 1000000;10000000;100000000;1000000000;10000000000;100000000000; 1000000000000;10000000000000;100000000000000;1000000000000000}, entraîne un résultat de 8076366415.
100000; 1000000;10000000;100000000;1000000000;10000000000;100000000000; 1000000000000;10000000000000;100000000000000;1000000000000000}, entraîne un résultat de 8076366415.
Le bloc rept(0;nbcar(A1))
sert uniquement à indiquer le format numérique à utiliser et donne donc tout
simplement ici "0000000000".
Remarque 2 – L’inconvénient
de la solution proposée par Roberto est que le résultat est un texte, qui ne
pourra donc pas servir à des calculs, sauf si on le multiplie ou le divise par
une valeur.
Remarque 3 – L’inconvénient
de ma solution – dû au fait que je renvoie justement une valeur – est que des « 0 »
finaux éventuels dans le nombre original ne sont pas visibles en tête dans mon
nombre final. Je ne peux pas en effet modifier le format numérique par formule
pour lui donner le nombre de « 0 » voulu…
On voit en effet en lignes 6
à 8 ce qui se passe quand le nombre original se termine par un « 0 ».
Excel MVP 2013 !
Je vous informe par ailleurs que Microsoft m'a renouvelé sa confiance et que je suis nommé MVP Excel pour l'année 2013.
1 Commentaire(s):
Tous mes meilleurs voeux pour 2013 et toutes mes félicitations pour le renouvellement de votre titre de MVP, mais j'aurais été étonnée du contraire au vu de la qualité de votre blog ainsi que la régularité de vos publications digne de l'horlogerie Suisse ;-)
Happy Blogging!
Tarek Demiati
www.jetreports.com/fr
By
Tarek Demiati / Jet Reports, sur 10:44 AM
Enregistrer un commentaire
<< Accueil