VB6 Fonction Instr et Right/Left

Signaler
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
Messages postés
532
Date d'inscription
lundi 5 juin 2006
Statut
Membre
Dernière intervention
6 octobre 2012
-
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

Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
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+
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
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+
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
21
Bonjour,

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

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

Si Nombre n'est pas un entier
Messages postés
55
Date d'inscription
lundi 3 mars 2008
Statut
Membre
Dernière intervention
17 avril 2008

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
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
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
Messages postés
18
Date d'inscription
mercredi 19 juillet 2006
Statut
Membre
Dernière intervention
10 avril 2008

L'utilisation de Split me semble quand même nettement plus adapté au problème posé :

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