double, string, et probleme de virgule...

  • Initiateur de la discussion Initiateur de la discussion youki
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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))
 
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.
 
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:
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.
 
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
@+
 
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...
 
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
 
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... 🙂
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour