VB6 Fonction Instr et Right/Left

cs_MagDix
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
- 9 avril 2008 à 21:03
cs_MagDix
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
- 10 avril 2008 à 19:58
Salut... je suis en VB6


Je cherche un moyen de prendre les décimal d'un nombre et de les mettres en entier
Exemple
Si j'ai 100,22
Je veux que ,22 devienne 22
Je dois faire cela en utilisant la foinctione Right/Left et instr
je ne peux pas faire ,22 * 100 le résultat n'est pas bon pour ce que je veux en faire
Exemple si j'ai 100,2 je veux avoir comme résultat 2 et non 20 (si je fais ,2 * 100)


Bref quelle est la meilleur solution avec les fonctions instr et Right/Left


J'essais plein de truc mais je n'y arrive pas...


Merci de votre aide

8 réponses

bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
9 avril 2008 à 21:36
Salut,

Sub valeur()
    Dim Nombre As String, Decimale As Long
    Nombre = "100,22"
    Decimale = CLng(Right(q, Len(q) - InStr(1, q, ",", 1)))
    MsgBox Decimale
End Sub

Attention cela ne fonctionne que si le nombre est une chaine

A+
0
bigfish_le vrai
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
12
9 avril 2008 à 21:38
oupps !

j'ai valider par erreur avant d'avoir fini

Sub valeur()
    Dim Nombre As String, Decimale As Long
    Nombre = "100,22"
    Decimale = CLng(Right(Nombre, Len(Nombre) - InStr(1, Nombre, ",", 1)))
    MsgBox Decimale
End Sub

A+
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
9 avril 2008 à 22:16
Bonjour,

puisque  le séparateur des décimales est la virgule, il suffit  de

Val(StrReverse(nombre))
0
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
9 avril 2008 à 22:18
Avec bien évidemment la précaution suivante :

Si Nombre n'est pas un entier
0

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

Posez votre question
Lunikmarty
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

9 avril 2008 à 23:04
Si tu tiens vraiment à utiliser Right,Left et Instr :

    Dim Nombre, Decimale, Entier As String
   
    Nombre = "100,22"
   
    Decimale = Right(Nombre, Len(Nombre) - InStr(1, Nombre, ",", 1))
    Entier = Left(Nombre, Len(Nombre) - InStr(1, Nombre, ",", 1))
    MsgBox "Partie Entiere: " & Entier & Chr(13) & "Partie Décimale: " & Decimale
0
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
10 avril 2008 à 09:32
Salut,

>[auteur/JMFMARQUES/615490.aspx jmfmarques] : Faudra tout de meme penser à refaire un StrReverse apres le Val sinon tu obtiendras 21 pour 100,12

@+: Ju£i?n
Pensez: Réponse acceptée
0
edt992
Messages postés
18
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 avril 2008

10 avril 2008 à 11:03
L'utilisation de Split me semble quand même nettement plus adapté au problème posé :

Decimal = Split(Nombre, ",")(1)
0
cs_MagDix
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
1
10 avril 2008 à 19:58
merci pour toute les solution...
0