Formules | Séparer Nombre d’un texte

Après plusieurs mois d’absence, je sors de mon mutisme pour décrire un truc rapide suite à une question reçue dernièrement…

Supposons que vous avez des cellules contenants un nombre au début ou à la fin d’un texte et que vous voulez l’extraire.

Exemple:

123.45m, on veut extraire uniquement 123.45.

 

extrairenombretexte

Impossible d’utiliser uniquement la fonction GAUCHE ou DROITE car le nombre de chiffres varie. Le truc consiste à utiliser la formule RECHERCHE (ou LOOKUP en anglais).

Ainsi, on aura en B2:

=LOOKUP(9^9,–LEFT(A2,ROW(A$1:A$15)))

Comment ça fonctionne?

En évaluation étape par étape, on voit que ça donne d’abord ceci:

=LOOKUP(387420489,–LEFT(“123.45m”,{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}))

On a une matrice (entre les { } ) de valeurs de 1 à 15 grâce à la fonction ROW (ou LIGNE en français)

Ensuite, on évalue encore :

=LOOKUP(387420489,–{“1″;”12″;”123″;”123.”;”123.4″;”123.45″;”123.45m”;”123.45m”;”123.45m”;”123.45m”;”123.45m”;”123.45m”;”123.45m”;”123.45m”;”123.45m”})

On obtient une matrice de 15 chaînes de caractères (de 1 à 15 caractères). La prochaine étape est de convertir ces chaînes en nombre, et c’est la que les “–” jouent un rôle crucial. L’effet de “–” est l’équivaluent de multiplier chacune des valeurs par 1. On aura un résultat numérique valide uniquement s’il n’y a aucune lettre. Nous aurons donc :

=LOOKUP(387420489,{“1″;”12″;”123″;”123.”;”123.4″;”123.45″;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”;#VALUE!”})

Finalement, la fonction LOOKUP nous donne la plus grande valeur de notre matrice, soit 123.45

 

Évidemment en E2, c’est le même principe. La seule différence étant l’utilisation de la fonction RIGHT (ou DROITE)

=LOOKUP(9^9,–RIGHT(A2,ROW(A$1:A$15)))

Voilà, c’est tout pour aujourd’hui… je retourne dans ma caverne… ;-)

À la prochaine!

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Les balises HTML ne sont pas autorisés.