Monsieur Excel
Pour tout savoir faire sur Excel !

04 janvier 2013

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.

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 Anonymous Tarek Demiati / Jet Reports, sur 10:44 AM  

Enregistrer un commentaire

<< Accueil