Je dois manipuler en vba des nombres stockés sous forme de chaine
"string". Le problème est que la conversion se fait mal si je souhaite
remplir des cellules avec ces nombres. Les nombres supérieurs à 1
"perdent" la virgule.
Exemple:
Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti
B = "2,5689" ' nombre qui pose pb
Range("A1").Value = A
Range("B1").Value = B
End Sub
Pour pallier au problème, je teste si la chaine est un nombre avec
IsNumeric() et je remplace le "," par un "." avant insertion.
Est un problème connu ou un mauvais usage de ma part, le nombre n'étant
pas conforme à cause du séparateur "," ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
Bonjour,
| A = "0,2365" ' nombre bien converti *** Dans la cellule, ce nombre s'affiche à gauche donc Excel le perçoit comme du texte et non un nombre.
| B = "2,5689" ' nombre qui pose pb *** C'est seulement un problème de format Excel arrondi le nombre...
Si tu as la virgule définie dans le panneau de configuration de Windows comme séparateur décimal, essaie ce qui suit :
'------------------------------------------ Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti B = "2,5689" ' nombre qui pose pb Range("A1").Value = CDbl(A) Range("B1").Value = CDbl(B) With Range("A1:B1") .NumberFormat = "# ##0.####" End With End Sub '------------------------------------------
| A = "0,2365" ' nombre bien converti
*** Dans la cellule, ce nombre s'affiche à gauche donc
Excel le perçoit comme du texte et non un nombre.
| B = "2,5689" ' nombre qui pose pb
*** C'est seulement un problème de format
Excel arrondi le nombre...
Si tu as la virgule définie dans le panneau de configuration
de Windows comme séparateur décimal, essaie ce qui suit :
'------------------------------------------
Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti
B = "2,5689" ' nombre qui pose pb
Range("A1").Value = CDbl(A)
Range("B1").Value = CDbl(B)
With Range("A1:B1")
.NumberFormat = "# ##0.####"
End With
End Sub
'------------------------------------------
| A = "0,2365" ' nombre bien converti *** Dans la cellule, ce nombre s'affiche à gauche donc Excel le perçoit comme du texte et non un nombre.
| B = "2,5689" ' nombre qui pose pb *** C'est seulement un problème de format Excel arrondi le nombre...
Si tu as la virgule définie dans le panneau de configuration de Windows comme séparateur décimal, essaie ce qui suit :
'------------------------------------------ Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti B = "2,5689" ' nombre qui pose pb Range("A1").Value = CDbl(A) Range("B1").Value = CDbl(B) With Range("A1:B1") .NumberFormat = "# ##0.####" End With End Sub '------------------------------------------
Si tu as la virgule définie dans le panneau de configuration de Windows comme séparateur décimal, essaie ce qui suit :
C'est bien ca
'------------------------------------------ Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti B = "2,5689" ' nombre qui pose pb Range("A1").Value = CDbl(A) Range("B1").Value = CDbl(B) With Range("A1:B1") .NumberFormat = "# ##0.####" End With End Sub '------------------------------------------
Si tu as la virgule définie dans le panneau de configuration
de Windows comme séparateur décimal, essaie ce qui suit :
C'est bien ca
'------------------------------------------
Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti
B = "2,5689" ' nombre qui pose pb
Range("A1").Value = CDbl(A)
Range("B1").Value = CDbl(B)
With Range("A1:B1")
.NumberFormat = "# ##0.####"
End With
End Sub
'------------------------------------------
Si tu as la virgule définie dans le panneau de configuration de Windows comme séparateur décimal, essaie ce qui suit :
C'est bien ca
'------------------------------------------ Sub Macro1()
Dim A As String, B As String
A = "0,2365" ' nombre bien converti B = "2,5689" ' nombre qui pose pb Range("A1").Value = CDbl(A) Range("B1").Value = CDbl(B) With Range("A1:B1") .NumberFormat = "# ##0.####" End With End Sub '------------------------------------------