double, string, et probleme de virgule...

youki

XLDnaute Occasionnel
Bonjour à tous, j'imagine comme d'habitude que la solution doit etre toute bete, mais dieu sait si ça m'enerve de ne pas trouver.

Je recupere d'un userform une valeur (1,23) cette valeur je la transforme à l'aide d'une fct pour pouvoir récuperer 1.23.
Ensuite avec Val() je la transforme en double pour l'inserer dans une variable appelé invariant.
Ma fonction Formate (voir ci dessou) fonctionne (en mode pas a pas). Mais lorsque je passe en double je retrouve la virgule et je ne sais pas pourquoi.
Code:
'--------------------------------------------------
Public Function Formate(ByVal valeur As String) As String
'--------------------------------------------------
Formate = Strings.Replace(valeur, ",", ".")
End Function

Code:
Dim invariant As String
invariant = Val(Formate(UserForm1.quantite.Value))
 

youki

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

car en mode pas à pas je met ma souris dessus et y'a a nouveau une virgule. De plus, je me sers de cette variable apres pour un calcul avec d'autres double, et j'ai une erreur qui apparait a cause de ma variable.
 

youki

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

arf non excuse c'était un essai en string mais effectivement mon invariant est bien en double
donc j'ai bien

dim invariant as Double

mais ça ne fonctionne pas.
Pour information je me ressert de mon invariant comme ceci:
Code:
sheetDevis.Cells(Ligne, 24).FormulaR1C1 = "=Round((" & Val(Formate(UserForm1.chef.Value)) * ((Val(Formate(UserForm1.heure.Value)) + (Val(Formate(UserForm1.minute.Value)) / 60))) & "* RC[-21]/" & invariant & "),2)"
Je suis certains que les autres valeurs fonctionnent.
Au passage cela fonctionne si je ne met pas de virgule dans l'"invariant"
 
Dernière édition:

youki

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

comme c'est dans une entreprise tout le monde à la "," de fixé. Mais, pour etre sur de ne pas avoir de souci je repasse toutes les valeurs saisies en "." pour les calculs sous VBA.
 

Pierrot93

XLDnaute Barbatruc
Re : double, string, et probleme de virgule...

Bonjour Youki, tototiti, PierreJean:)

pas sur d'avoir tout compris, essaye peut être comme ceci :

Code:
Dim invariant As Double
invariant = CDbl(Replace(Me.TextBox1.Value, ",", "."))

bonne fin d'après midi
@+
 

bruno66

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

attention, la virgule et le point ne font pas bon menage ensemble, surtout en informatique, et en automatisation, regarder dans l'outillinguistique eventuellement comment est programmer la decimal numerique...
 

youki

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

Snif, je n'arrive pas à comprendre pourquoi cela ne marche plus et toujours pas malgré votre aide.

Je re explique tout doucement.

Dans un userform on peut taper une valeur appelé quantité. Pour commencer j'ai une sub qui interdit de mettre des lettres:
Code:
Private Sub quantite_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("0") To Asc("99")
Case Asc("."), Asc(",")
If InStr(1, quantite.Text, ".") > 0 Or InStr(1, quantite.Text, ",") > 0 Then
KeyAscii = 0
End If
Case Else
KeyAscii = 0
End Select
End Sub

Ensuite une fois userform rempli je dois faire des calcul. Jusqu'a maintenant j'utiliser toujours:

Dim mavariable as double
mavariable= val(Formate(userform.quantite.value))

avec formate=
Code:
'--------------------------------------------------
Public Function Formate(ByVal valeur As String) As String
'--------------------------------------------------
Formate = Strings.Replace(valeur, ",", ".")
End Function

Seulement maintenant, lors du passage à la fonction double cela remet une virgule a la place du point.
Je fais tous mes calculs avec le point sous vba.

A savoir que tous mes calcul fonctionne si je ne met pas de virgule... snif je suis nul
 

tototiti2008

XLDnaute Barbatruc
Re : double, string, et probleme de virgule...

Bonjour à tous,

tout ce que je peux te dire, d'après mes derniers tests :
lors de la saisie dans un userform (textbox), si je remplace les points par des virgules (et non pas le contraire), les valeurs numériques peuvent facilement être converties en double avec un CDbl (je n'utilise pas trop Val personnellement)

si ça peut te mettre sur la piste... :)
 

youki

XLDnaute Occasionnel
Re : double, string, et probleme de virgule...

Une question encore. j'insere ma variable dans une formule comme ceci:
Code:
    sheetDevis.Cells(Ligne, 24).FormulaR1C1 = "=Round((" & Formate(UserForm1.chef.Value) * ((Formate(UserForm1.heure.Value) + (Formate(UserForm1.minute.Value) / 60))) & "* RC[-21]/" & Formate(UserForm1.quantite.Value) & "),2)"

Quel est le format de la cellule RC[-21], est elle concidéré comme variant, double, string?? et surtout comment la formater pour que le calcul soit possible.
 

Discussions similaires

Statistiques des forums

Discussions
312 309
Messages
2 087 106
Membres
103 469
dernier inscrit
Thibz