Bonjour,
C'est un problème archi-classique dû à la pris en compte des paramètres régionaux par le VBA (point décimal, présentation des dates...)
Envoyé par
Toto_le_héros38
Je cherche depuis hier comment transférer une variable "12.34" (décimal) dans un champ de type décimal(4, 2) de ma table SQL.
Comment ? Avec une instruction de type INPUT ?
Envoyé par
Toto_le_héros38
et l'espion m'indique qu'il a transforme la valeur de a =12,34
L'espion n'indique rien du tout. a est un réel et il le présente à un français tel qu'il souhaite le voir
Envoyé par
Toto_le_héros38
J'ai modifié les options de excel pour utiliser le point comme séparateur, ça fonctionne visuellement dans les cellules mais pour dans le cobe vba.
Ce sont les paramètres windows qu'il faudrait modifier pour être tranquille mais cela impacterait tous les logiciels et en plus le tableau ne pourrait être utilisé qu'avec un windows US
En réalité le problème n'existe que lorsqu'on convertit un nombre (ou une date) en string, sinon le VBA sait à quoi il a à faire grâce au typage de la variable
Et pour être plus complet il n'existe que si cette string sert ensuite à renseigner un champ numérique à travers une instruction SQL. J'utilise pour cela une fonction standard perso :
1 2 3 4 5 6 7 8 9 10 11 12
| Public Function Num(r, Optional n As Integer = 0)
Dim f As String, i As Integer
If n <= 0 Then f = "0" Else f = "0."
For i = 1 To n
f = f & "0"
Next
If IsNumeric(r) Then
Num = Replace(Format(r, f), ",", ".") 'format(pi,'0.00') renvoie "3,14" en France !
Else
Num = 0
End If
End Function |
Et ensuite pour mes instructions SQL (insert ou update) :
"UPDATE matable SET x=" & num(a,2) & " WHERE..."
Partager