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

Messages postés
10
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
26 décembre 2017
- - Dernière réponse : Frenchie83
Messages postés
1986
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 septembre 2019
- 19 mai 2016 à 07:16
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 ?
Afficher la suite 

5 réponses

Messages postés
10
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
26 décembre 2017
0
Merci
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
1938
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
16 août 2019
753
0
Merci
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
1986
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 septembre 2019
220
0
Merci
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
Raymond PENTIER
Messages postés
49743
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 septembre 2019
10537 -
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 ...
Frenchie83
Messages postés
1986
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 septembre 2019
220 > Raymond PENTIER
Messages postés
49743
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 septembre 2019
-
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
49743
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 septembre 2019
10537
-1
Merci
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
1986
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
4 septembre 2019
220
-1
Merci
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