OVH Cloud OVH Cloud

Equivalent cnum dans une macro

4 réponses
Avatar
Yvan
Bonjour,

Je souhaite qu'une macro convertisse le contenu d'une cellule au format
texte en format numérique. Sur une feuille de calcul Excel, on utilise
habituellement la fonction CNUM, laquelle est traduite par VALUE dans une
macro.
Mais dans mon cas, j'obtiens un message du type "Sub ou fonction non
définie" lorsque la macro suivante est utilisée :
Cells(1,1) = Value (Cells(1,1))
J'imagine qu'il ne faut pas utiliser le terme Value mais un autre. Mais
lequel ???
--
Merci pour vos réponses.

4 réponses

Avatar
LeSteph
Bonsoir ,
Pour les conversion voir Exemples CInt ou CSng
dans l'aide VBA et l'option 'voir aussi ' c'est bien
expliqué mais
attention aux éventuelles pertes de données
et à la diversité des types:
Integer
Single
Double
Currency
Variant
String

LeSteph

"Yvan" a écrit dans le message de
news:
Bonjour,

Je souhaite qu'une macro convertisse le contenu d'une cellule au format
texte en format numérique. Sur une feuille de calcul Excel, on utilise
habituellement la fonction CNUM, laquelle est traduite par VALUE dans une
macro.
Mais dans mon cas, j'obtiens un message du type "Sub ou fonction non
définie" lorsque la macro suivante est utilisée :
Cells(1,1) = Value (Cells(1,1))
J'imagine qu'il ne faut pas utiliser le terme Value mais un autre. Mais
lequel ???
--
Merci pour vos réponses.


Avatar
isabelle
bonjour Yvan,

x = CDbl([A1])
Range("A1").Clear
Range("A1") = x

isabelle


Bonjour,

Je souhaite qu'une macro convertisse le contenu d'une cellule au format
texte en format numérique. Sur une feuille de calcul Excel, on utilise
habituellement la fonction CNUM, laquelle est traduite par VALUE dans une
macro.
Mais dans mon cas, j'obtiens un message du type "Sub ou fonction non
définie" lorsque la macro suivante est utilisée :
Cells(1,1) = Value (Cells(1,1))
J'imagine qu'il ne faut pas utiliser le terme Value mais un autre. Mais
lequel ???
--
Merci pour vos réponses.


Avatar
LeSteph
ReBonsoir,
Plutôt qu'une solution toute faite, tu gagneras à voir dans l'aide...
Aussi pour suivre plus précisément sur ta question
à moins d'avoir besoin d'un format plus complexe ou précis,
CSng devrait faire l'affaire .
Ainsi:
Cells(1,2).value=CSng(Cells(1,2).value)
ou bien
Cells(1,2).valueÍbl(Cells(1,2).value)
si tu veux double précision
CInt tronquera les décimales.
(dans une division par ex utiliser mod pour n'avoir que les décimales
restantes)
Attention tout texte ne donnera pas forcément du numérique.
Tu peux toujours essayer de convertir Cdbl("Miss Marpple")....!
A contrario le numérique peut être interprèté en texte.

Ta question laisse supposer que tu as des données soit issues d'une autre
appli soit ayant fait l'objet d'une conversion soit saisie ainsi '8 qui
donne
le texte 8 et non la valeur 8.
Sinon le fait d'exercer une entrée dns une cellule est interprèté en Format
"standard"
donc un chiffre saisi au clavier (sauf macro évennementielle ou autre ) sera
interprèté en
numérique et même parfois l'entrée d'un string par macro .
Aussi:
Pour convertir plus globalement une colonne entière ou plusieurs tu peux
utiliser
le menu Données Convertir:
Essaie de le faire avec l'enregistreur de macros c'est intéressant après
tu change des paramêtres et tu regardes les résultats dans le code.
..blabla...(je débranche)

;-)
leSteph

"LeSteph" a écrit dans le message de
news:%
Bonsoir ,
Pour les conversion voir Exemples CInt ou CSng
dans l'aide VBA et l'option 'voir aussi ' c'est bien
expliqué mais
attention aux éventuelles pertes de données
et à la diversité des types:
Integer
Single
Double
Currency
Variant
String

LeSteph

"Yvan" a écrit dans le message de
news:
Bonjour,

Je souhaite qu'une macro convertisse le contenu d'une cellule au format
texte en format numérique. Sur une feuille de calcul Excel, on utilise
habituellement la fonction CNUM, laquelle est traduite par VALUE dans
une


macro.
Mais dans mon cas, j'obtiens un message du type "Sub ou fonction non
définie" lorsque la macro suivante est utilisée :
Cells(1,1) = Value (Cells(1,1))
J'imagine qu'il ne faut pas utiliser le terme Value mais un autre. Mais
lequel ???
--
Merci pour vos réponses.






Avatar
AV
Une fois la plage remise au format standard (ou autre numérique) :

[A1:A10] = [A1:A10*1]

AV