OVH Cloud OVH Cloud

Fonction CNUM

17 réponses
Avatar
josephb
Bonjour à toutes et tous

Excel 98/Mac

en D2 le texte
105 ; 140 ; 41

en E2 la formule
=SUBSTITUE(D2;" ; ";"+") --> 105+140+41 (texte)

en F2 la formule

=CNUM(E2) --> #VALEUR! alors que j'aurais bien aimé 286 ;-)

Encore

E2 formule
=SUBSTITUE(D2;" ; ";"") --> 10514041 --> F2 --> 10514041 (nombre)

En E2
SUBSTITUE(D2;" ; ";" ") --> 105 140 41 --> F2 --> #VALEUR!

une parade à ce comportement ?

Merci de vos lumières



--
J. B.

7 réponses

1 2
Avatar
josephb
Bonjour Michdenis

michdenis wrote:

'------------------------------------
Function Eval(Rg As Range)
Eval = Evaluate(Replace(Rg, ";", "+"))
End Function
'------------------------------------



Un pb :

la fonction Replace est surlignée et j'ai le message

Erreur de compilation:
Sub ou Function non définie


et dans ta cellule : = Eval(D2)


# Valeur!

regardé dans l'explorateur d'objets (Excel 98 Mac)
Replace existe dans la bibliothèque Excel
mais est introuvable dans celle de VBA...
Ceci explique sans doute cela ?

Quoiqu'il en soit, la méthode proposée par Caetera a fonctionné.
En tout cas, merci pour tes précieuses interventions.

Cordialement.
--
J. B.
Avatar
michdenis
C'est Ok Frédéric.



"FS" a écrit dans le message de groupe de discussion :
#
Non, moi aussi.
La chaine à rechercher dans le 1er et le 5ème TROUVE est
" ;"
et non
";"
Problème de copie dans le courrielleur :)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

michdenis a écrit :
Bonjour Frédéric,

Après un copier-coller, j'obtiens #Valeur!
Serais-je le seul ?
;-)

Salutations



"FS" a écrit dans le message de groupe de discussion :
eqn#
Bonsoir,

Si on veut se passer de macro, il y a aussi (avec le texte à travailler
en A1) :

=SOMME(GAUCHE(A1;TROUVE("
;";A1;1))*1;STXT(A1;TROUVE(";";A1;1)+2;TROUVE(";";A1;TROUVE(";";A1;1))-2)*1;DROITE(A1;NBCAR(A1)-NBCAR(GAUCHE(A1;TROUVE("
;";A1;1)))-NBCAR(STXT(A1;TROUVE(";";A1;1)+2;TROUVE(";";A1;TROUVE(";";A1;1))-2))-5)*1)

(le tout sur une seule ligne bien sûr).
Evidemment c'est moins concis qu'une ligne de code :)

FS


Avatar
isabelle
bonjour Joseph,

tu peut télécharger MoreFunc ici : http://xcell05.free.fr/
c'est ok pour excel 97, et c'est une excellente version si sp3 est
installé ;-)

isabelle

Joseph B. a écrit :
Bonsoir Isabelle,

isabelle wrote:


ps/ oups, c'est une fonction de Morefunc




Excel 97/98... Excel 2007
Bah, oui j'imagine que c'est frustrant d'essayer d'aider un dinosaure a
sortir de son marécage ;-))
Mais j'apprécie ton geste et j'apprends aussi de tes autres
interventions sur le forum.

Cordialement.




Avatar
michdenis
La fonction replace demande Excel 2000.

Si elle n'est pas présente sur ta version, tu peux utiliser :
'----------------------------------
Function Eval(Rg As Range)
Eval = Evaluate(Application.Substitute(Rg, ";", "+"))
End Function
'----------------------------------

"Joseph B." a écrit dans le message de groupe de discussion :
1j6b4bk.upz636s5wg74N%
Bonjour Michdenis

michdenis wrote:

'------------------------------------
Function Eval(Rg As Range)
Eval = Evaluate(Replace(Rg, ";", "+"))
End Function
'------------------------------------



Un pb :

la fonction Replace est surlignée et j'ai le message

Erreur de compilation:
Sub ou Function non définie


et dans ta cellule : = Eval(D2)


# Valeur!

regardé dans l'explorateur d'objets (Excel 98 Mac)
Replace existe dans la bibliothèque Excel
mais est introuvable dans celle de VBA...
Ceci explique sans doute cela ?

Quoiqu'il en soit, la méthode proposée par Caetera a fonctionné.
En tout cas, merci pour tes précieuses interventions.

Cordialement.
--
J. B.
Avatar
josephb
Bonsoir Frédéric

FS wrote:

Si on veut se passer de macro, il y a aussi (avec le texte à travailler
en A1) :

=SOMME(GAUCHE(A1;TROUVE("
;";A1;1))*1;STXT(A1;TROUVE(";";A1;1)+2;TROUVE(";";A1;TROUVE(";";A1;1))-2)*1;
DROITE(A1;NBCAR(A1)-NBCAR(GAUCHE(A1;TROUVE("
;";A1;1)))-NBCAR(STXT(A1;TROUVE(";";A1;1)+2;TROUVE(";";A1;TROUVE
(";";A1;1))-2))-5)*1)

(le tout sur une seule ligne bien sûr).
Evidemment c'est moins concis qu'une ligne de code :)



Bel exercice de comptage ! Full Respect.
Malheureusement les cellules peuvent avoir n'importe quel nombre de
valeurs séparées par "espace"-"point-virgule"-"espace", aussi mieux vaut
une fonction basée sur Replace ou Substitue, amha.

Cordialement,
--
J. B.
Avatar
josephb
Bonsoir Isabelle

isabelle wrote:

tu peut télécharger MoreFunc ici : http://xcell05.free.fr/
c'est ok pour excel 97, et c'est une excellente version si sp3 est
installé ;-)



Ah là là, cas désespéré que le mien, les bouées de sauvetage que tu me
tends tombent à l'eau (c'est le cas de le dire) : non content d'avoir
une antiquité*, c'est aussi un Mac !

* dans le genre j'ai encore Excel V. 5.0 de 1994, tu sais celui dont le
VBA est en français avec une incroyable usine à gaz pour rendre les
scripts "transportables" en Norvégien comme en Portugais pour le
Portugal ou en Portugais pour le Brésil (Sic). Mais là je n'oserais
quand même pas ;-)

Cordialement,

--
J. B.
Avatar
josephb
michdenis wrote:

La fonction replace demande Excel 2000.



OK, pas chez moi, mais au bureau

Si elle n'est pas présente sur ta version, tu peux utiliser :
'----------------------------------
Function Eval(Rg As Range)
Eval = Evaluate(Application.Substitute(Rg, ";", "+"))
End Function



Ça marche aux petits oignons !
Vous m'aviez appris sur le forum (il y a quelques temps déjà) à utiliser
les fonctions intégrées d'Excel dans VBA. Je n'ai pas encore le réflexe,
mais ne désespérons pas ;-)

Merci et bonne soirée.

--
J. B.
1 2