Transformer par une formule du texte en nombre [Fermé]

Signaler
Messages postés
10
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
26 décembre 2017
-
Messages postés
2205
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
7 juin 2021
-
Bonjour,

Ce devrait être la version Pour les Nuls d'une FAQ pour néophytes débutants, j'ai honte de vous poser une question aussi triviale (et j'ai un peu peur de la réponse, mais si elle donne la solution, toute honte bue...).

J'ai en colonne A des cellules de textes qui contiennent des nombres.
C'est volontaire, elles sont issues de formules.
Les formules de cette colonne sont donc "=TEXTE(F:F;"")" (F:F étant ma colonne source, qui en principe contient du texte).
Je veux que la colonne B contienne les valeurs numériques de cette colonne.
Je fais assez logiquement un "=CNUM(A:A)", et... j'obtiens une erreur "#VALEUR!".

Ô choc ! la fonction CNUM, qui transforme un texte en nombre, ne le fait pas quand le texte est... un texte !!! C'est du moins ce que m'indique l'aide d'Excel. On ne sait pas pourquoi. Mais il n'y a apparemment pas de fonction similaire et qui le ferait.

Et la doc du support Office confirme, et propose 4 manières de faire un "format standard" à la main (comme si on ne pouvait pas le faire dans une formule, mais alors les formules elles servent à quoi ?). Une seule aurait suffi, de toute façon ce n'est pas ce dont j'ai besoin.

Dans le genre 'si le contenu d'une base de données ne vous convient pas, il vous suffit de la retaper entièrement à la main dans le bon format, et vous verrez l'éblouissante efficacité de la conversion'. Forcément, s'il n'y a plus rien à faire... mais à quoi donc sert un ordinateur ?
Je suis consterné par tant de médiocrité.

Je me demande s'il ne va pas falloir ressortir le maillet et le silex, et découper la chaîne en caractères pour reconstruire un nombre à partir des valeurs ASCII des caractères; Navrant comme régression, on revient 35 ans en arrière: en fait, un peu avant la sortie de VisiCalc.

Il y a certainement un moyen plus intelligent, une fonction non documentée: EVAL(CONCAT(GAUCHE(...);...;GAUCHE(...))) ou (APPLY lambda-expr args ...) peut être ? (Le lambda-calcul est sorti en 1956, ça fait à peine 60 ans. J'ose pas un smiley...)

Que faire ?
A voir également:

5 réponses

Messages postés
10
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
26 décembre 2017

A noter que le solution présentée dans http://www.astucesinternet.com/modules/smartsection/item.php?itemid=25, que l'on s'attendrait à voir fonctionner, est justement ce que je demande, et qui ne fonctionne plus dans la version plus récente d'Excel.
Messages postés
1978
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
28 septembre 2020
842
Bonjour à tous,

Iil te suffit de respecter ce qui est dit dans astuceinternet.com :
en B1, tu mets =CNUM(A1)

Ensuite, tu recopies vers le bas ta cellule B1.


Si tu utilises des formules sur des colonnes entières, tu vas alourdir ta feuille et ralentir les recalculs.

En 2004 cjoint n'existait sans doute pas mais sache que si tu avais envoyé un extrait de ton classeur excel, tu aurais eu une ou plusieurs réponses circonstanciées dans l'heure.
Des fois, on trouve des caractères spéciaux invisibles dans des nombres formatés en texte qui bloquent le fonctionnement attendu des conversions.
Et sans le fichier, on ne peut rien faire de précis.

cdlt
Messages postés
2205
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
7 juin 2021
322
Bonjour à tous
Je reprends la conversation parce que je vois ma réponse affublée d'un -1 alors que je n'ai fait que répondre à la question posée.
Notre ami cs_plefebv voulait appliquer la formule sur la colonne entière"Je veux que la colonne B contienne les valeurs numériques de cette colonne.". cs_plefebv maintenait que la solution avec CNUM ne fonctionnait pas, j'ai simplement voulu lui montrer que cela pouvait fonctionner mais en validant avec la combinaison de touches (on aurait pu tout aussi bien ne prendre qu'une plage au lieu de la colonne entière).
Je sais très bien que ce genre de formule est gourmande en ressources et qu'il valait mieux écrire la formule toute simple dans une cellule et l'étirer vers le bas, mais je n'ai pas voulu rentré dans les détails vu que c'était uniquement dans le but de démontrer que la formule fonctionnait. Comme quoi parfois apporter un peu d'aide sans aller jusqu'au fond des choses peut être mal perçu. C'est une leçon que je vais tacher de retenir pour l'avenir.
Merci d'avoir pris le temps de me lire.
Cdlt
Messages postés
54102
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
16 092
Ne t'énerve pas, Frenchie83 !

C'est toi qui interprête mal la formule : Quand on saisit =CNUM(A:A) en B2, Excel comprend parfaitement que cela signifie "Convertir en nombre la donnée placée dans la colonne A:A, dans la même ligne 2:2, donc en A2".
Et cette même formule recopiée vers le bas permet, sans aucune modification, d'effectuer la même tâche.
Ta démonstration n'était donc pas opportune, et il ne faut pas t'étonner d'avoir été désavoué sur ce coup-là ... Cela m'arrive aussi de me planter, mais je n'en tiens pas rigueur à qui me le fait remarquer, et ainsi je progresse ...
Messages postés
2205
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
7 juin 2021
322 >
Messages postés
54102
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
20 juin 2021

Bonjour Raymond
Non non, je ne m'énerve pas, et ce n'est pas tellement le fait d'être désavoué, mais plutôt le fait de n'avoir pas été compris dans ma démarche, mais il est vrai aussi que de mon côté j'ai probablement mal interpréter la question.
Et je n'en tiens pas rigueur à qui que ce soit, au contraire, parce que je considère que tout critique justifiée est bénéfique pour évoluer et j'estime (encore et toujours) que j'ai beaucoup à apprendre des autres.
Merci Raymond pour vos remarques toujours aussi pertinentes,
Bonne journée.
Cordialement
Messages postés
54102
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
20 juin 2021
16 092
Bonjour.

Avant de stigmatiser les logiciels et leurs concepteurs, attache-toi d'abord à respecter la syntaxe des fonctions !

Je fais assez logiquement un "=CNUM(A:A)", et... j'obtiens une erreur "#VALEUR!" n'est pas logique du tout, car tu n'as mis qu'un seul argument alors que la fonction en exige 2 :
La syntaxe est =TEXTE(valeur;format texte),
mais tu te contentes de =TEXTE(valeur) !

Alors tes envolées "Je suis consterné par tant de médiocrité. Je me demande s'il ne va pas falloir ressortir le maillet et le silex" sont un rien excessives, non ?

C'est bien, la retraite ! Surtout aux Antilles ... :-) 
Raymond (INSA, AFPA, CF/R)
Messages postés
2205
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
7 juin 2021
322
Bonjour cs_plefebv, Bonjour Raymond
La formule que vous utilisez "=CNUM(A:A)" s'applique à une cellule unique, mais vous, vous l'appliquez à une plage(ici la colonne entière) dans ce cas, sélectionnez la colonne entière, saisissez la formule "=CNUM(A:A)" dans la barre de formules et validez par CTRL +SHIFT + ENTREE, ce qui devient {=CNUM(A:A)} et la ça marche.
Cdlt