Decimal

Résolu
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008 - 11 déc. 2005 à 17:08
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 - 11 déc. 2005 à 19:59
Bonjour,
je n'arrive pas a récuperer ma valeur decimal de mon combobox
il affiche un integre
j'ai essayer avec Cdec(combobox1.seltext)
il n'affiche pas la virgule?
qui pourrais m'aider
merci d'avance

13 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 18:39
et ça c'est de l'Integer ???







Dim diam As Double

Combo1.AddItem "123456.78"

Combo1.ListIndex = Combo1.ListCount - 1

diam = Val(Combo1.Text)

MsgBox diam --> 1234546.78


Daniel
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 déc. 2005 à 19:30
ne fais pas :

.AddItem "10.29"
.AddItem "13.72"
.AddItem "17.15"

mais plutot

.AddItem cstr(10.29)
.AddItem cstr(13.72)
.AddItem cstr(17.15)

il ne faut jamais présumer des séparateurs décimaux
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 19:59
CanisLupus >>>

forcément si on utilise Val() il faut pas de virgule

étant donné qu'il rentre ses valeurs en dur, il n'a pas à faire de test de numéricité.





il a 2 solutions:

- soit il rentre ses valeurs avec un point en utilisant Val()

.AddItem "10.29"

diam = Val(Combo1.Text)

- soit la méthode Renfield qui laisse Vb faire la conversion dans les deux sens

.AddItem Cstr(10.29)

diam = CDbl (Combo1.Text)



si ses valeurs viennent de l'extérieur, là il sera bien obligé de faire des Test de numéricité.




Daniel
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 déc. 2005 à 17:28
Salut
"Récupérer" : Relire le contenu du ComboBox
"Afficher" : Ajouter une donnée au ComboBox
Alors, lequel ne marche pas ?
C'est confu tout ça !
L'affichage de la donnée est-elle correcte dans le ComboBox ?
Et les lignes de codes avec lesquelles tu écris ta donnée ?
Et les lignes de codes avec lesquelles tu récupères cette donnée ?

As-tu dimensionné la variable ? comment ? ... peut-être qu'elle est de type Integer ou Long

Ca manque de précision et de détails !


Comment veux-tu qu'on t'aide si tu ne nous dis pas ce que tu as écrit ?


Ca me parait une évidence ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
11 déc. 2005 à 17:50
re:salut


dim diam as double

Private Sub UserForm_Activate()
With combobox_Diam
.AddItem "10.29"
.AddItem "13.72"
.AddItem "17.15"
.BoundColumn = 0
.ListIndex = 0
end with
end sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Sub cmdDraw_Click()
diam = Cdec( combobox_Diam.seltext)
end sub
' la je devrais avoir les chiffres avec une virgule.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
11 déc. 2005 à 17:57
Salut,
Remplace le Cdec par CSng ou CDbl suivant la précision que tu veux avoir.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 18:14
UserForm = VBA ?

.BoundColumn connais pas







Private Sub Form_Load()

With Combo1

.AddItem "10,29"

.AddItem "13,72"

.AddItem "17,15"

.ListIndex = 0

End With

End Sub



Private Sub Command1_Click()

Dim diam As Double



' Combo1.SetFocus

' diam = Combo1.SelText

' MsgBox diam



diam = Combo1.Text

MsgBox diam



End Sub


Daniel
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
11 déc. 2005 à 18:15
j'ai éssayer avec CSng, CDbl toujour la même chose pas de virgule
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 18:18
2éme cas









Private Sub Form_Load()

With Combo1

.AddItem "10.29"

.AddItem "13.72"

.AddItem "17.15"

.ListIndex = 0

End With

End Sub



Private Sub Command1_Click()

Dim diam As Double



diam = Val(Combo1.Text)

MsgBox diam



End Sub

Daniel
0
lispo Messages postés 49 Date d'inscription dimanche 2 octobre 2005 Statut Membre Dernière intervention 1 septembre 2008
11 déc. 2005 à 18:32
val(combo1.text) = integer
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
11 déc. 2005 à 18:53
Hep, il n'y aurait pas un tit prob de séparateur décimal ? point ou virgule ?
Au passage, je vote contre l'emploi de la fonction Val() quand il s'agit de conversion ou de test de numéricité. Voir la MSDN pour plus de précision.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 déc. 2005 à 19:02
Canislupus >> peut être bien oui


mais Val() a un avantage c'est qu'il
n'utile que le point




lispo >>> c'est quoi cette propriété BoundColumn = 0

elle n'existe dans les composants Forms 2.0





Dim diam As Double

Combo1.AddItem "123456,78"

Combo1.ListIndex = Combo1.ListCount - 1

diam = CDbl (Combo1.Text) 'conversion implicite

MsgBox diam --> 123456.78 ou Plantage !!!!

Daniel
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
11 déc. 2005 à 19:42
Daniel > dans ce cas, val n'a aucun avantage. Chez moi, etant configuré avec le point comme séparateur décimal, val() retourne "1" pour des valeurs telles que "1,25" ou "1abc" ou "1.ab" ou "1..25" ou "1,.25", etc ... Donc à proscrire.car non fiable.

Le mieux, à mon avis est de tester isnumeric et si false remplacer les "," par des "." ou inversement suivant le séparateur décimal des options régionales. Voir les nombreux topics sur ce sujet.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous