begin process at 2012 02 15 02:43:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

VBA

 > 

comment récupérer la valeur des décimales d'une variable de type long ?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

comment récupérer la valeur des décimales d'une variable de type long ?

jeudi 7 juillet 2005 à 13:38:54 | comment récupérer la valeur des décimales d'une variable de type long ?

robmor

bonjour,
comment pourrais-je récupérer la valeur des décimales d'une variable de type long ? (pour une valeur de 32,56 par exemple, je voudrais récupérer 56 uniquement...)
merci !
jeudi 7 juillet 2005 à 13:58:57 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

guilleto

Bonjour,

Voici un bout de code te permettant de faire ce dont tu as besoin et cela quelque soit le séparateur décimal !

Option Explicit
' Déclaration des librairies nécessaires !
Const LOCALE_SDECIMAL As Long = &HE
Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long
Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
' Déclaration des fonctions de récupération du séparateur décimal !
Public Function GetUserLocaleInfo(ByVal dwLocaleID As Long, ByVal dwLCType As Long) As String
   Dim sReturn As String
   Dim R As Long
   R = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
   If R Then
      sReturn = Space$(R)
      R = GetLocaleInfo(dwLocaleID, dwLCType, sReturn, Len(sReturn))
      If R Then
         GetUserLocaleInfo = Left$(sReturn, R - 1)
      End If
   End If
End Function

' Il faut mettre un CommandButton sur la feuille
Private Sub Command1_Click()
  Command1.Caption = PartieDecimale(33.56)
End Sub

' Petite fonction qui peut être appelée de partout !
Public Function PartieDecimale(Valeur)
  Dim LCID As Long
  Dim SymboleDecimal As String
  LCID = GetSystemDefaultLCID()
  SymboleDecimal = GetUserLocaleInfo(LCID, LOCALE_SDECIMAL)
 
  PartieDecimale = Mid$(Valeur, InStr(1, Valeur, SymboleDecimal, vbTextCompare) + 1)
End Function

Et Voilà !

Y a certainement plus simple mais cela permet aussi de manipuler les librairies pour la gestion des paramètres régionaux !

Bonne Prog

Olivier

jeudi 7 juillet 2005 à 15:55:02 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

robmor

merci bien de ton aide; il va falloir que je voie ça de plus près, ça me paraît encore un peu obscur...!
jeudi 7 juillet 2005 à 17:18:28 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

Totoroyamada

S'il n'y a que 2 décimales, tu multiplies ton nombre par 100, tu le convertis en string et tu récupères les deux derniers caractères... et s'il peut y avoir plus de décimales tu multiplies par 1000, 10000 etc et tu récupères les 3, 4 etc... derniers caractères...
Comme ça même si y a pas de décimales, tu récupères 0, et tu te fiches des paramètres régionaux...
C'est de la bidouille mais pas besoin d'API ou autre (mais c'est sûr, c'est moins intéressant que la soluce de guilletto)

vendredi 8 juillet 2005 à 09:06:22 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

guilleto

Salut,

En effet c'est de la bidouille !

C'est la solution que j'utilisais avant !

Seul inconvénient c'est que tu ne sais jamais combien de chiffres il y a après la virgule !

Donc ...... vive les API !

@+

Bonne prog

Olivier
vendredi 8 juillet 2005 à 10:38:06 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

Totoroyamada

C'est effectivement le problème... Mais par exemple, dans le cas de l'appli commerciale qu'on développe, on ne va jamais plus loin que 3 chiffres, donc en une ligne on a ça:
Dim MesDecimales As Integer = CType(((MonNombre * 1000).ToString.Substring((MonNombre * 1000).ToString.Length - 3)), Integer)
Mais comme tu dis, vive les API, il est plus intéressant de les manipuler... mais un peu de bidouille n'a jamais tué personne...

vendredi 8 juillet 2005 à 10:54:11 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

guilleto

Salut Totoroyamada,

Est-ce que ce genre de codage n'a pas pour effet secondaire de TRONQUER la valeur ??

Exemple : 3.157664879 => 3.157 au lieu de 3.158 (étant donné que le chiffre suivant 6 est > à 5) !

Remarque identique pour des nombres négatifs !

Cordialement,

Olivier
vendredi 8 juillet 2005 à 11:35:30 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

Totoroyamada

Le but du truc n'est pas de récupérer les X premiers chiffres après la virgule, mais tous les chiffres... donc pas d'histoire d'arrondi. Dans le cas présent, pour utiliser ma méthode il faudrait multiplier ton nombre par 1000000000... et on voit bien là les limites de la bidouille... ;-)
vendredi 8 juillet 2005 à 14:01:16 | Re : comment récupérer la valeur des décimales d'une variable de type long ?

Totoroyamada

(Par contre désolé je viens à peine de m'apercevoir que c'est du VBA alors que j'ai filé du .Net...)


Cette discussion est classée dans : récupérer, variable, type, valeur, décimales


Répondre à ce message

Sujets en rapport avec ce message

affecter valeur à variable de type date [ par darwin42 ] salut,je voudrais savoir comment on fait pour affecter une valeur à une variable de type date. Seulement, le chiffre du jour se trouve dans un label, Peut-on vérifier le type d'une variable?!? [ par CDAlstom ] Bonjour!Je pense que ma question est assez "banale"...A un endroit de mon code je calcule la moyenne des valeurs d'une colonne (entre la ligne 11 et l Récupérer la valeur d'une variable à partir d'une chaîne : GetVarValue ou autre ? [ par robin42p ] Bonjour,Je souhaite récupérer la valeur d'une variable, dans le même style que la fonction Val()Le but est d'éviter un traitement long, variables par Récupérer une valeur plusieurs fois pour la même variable (copier coller conditionnelle) [ par Irden ] Salut,J'ai une variable "Température" qui est présente plusieurs fois dans mon fichier Excel et je veux récupérer sa valeur à chaque fois, qui est tou Récupérer la valeur d'une variable après fermeture du programme [ par fredx76 ] Bonjour, Je suis actuellement en train de développé une petite application sous Visual Basic Express 2010 et je rencontre un problème. J'ai besoin de Variables d'environnement [ par Philippe734 ] Bonjour, Je sais comment récupérer la valeur d'une variable environnement. Je connais même plusieurs méthodes. Chacune permettent de récupérer la va récupérer la valeur d'une combobox et déclaration de variable. [ par micku2b ] bonjour, Voila mon problème je souhaiterais pouvoir récupérer la valeur de ma ComboBox1 (que je charge à l'ouverture du classeur) à n'importe quel mo ODBC SAGE (Base approprie ) [ par ataeallah ] Bonjour tous, J'utilise le driver ODBC pour pouvoir communiquer avec une base sage 100 ver 16.5. Pour les updates je n'ai pas de problème, par contre Nommer une variable à partir de la valeur d'une autre variable (évaluer, concaténer) [ par Jayme65 ] Bonjour, Je suis débutant (donc, merci d'avance pour votre compréhension ;) Voila, j'ai jusqu'à présent programmé en ActionScript, et je veux porter m variables décimales [ par Mathioustone ] Bonjour à tous, Encore un mystère de microsoft office à résoudre [^^mad5]... Je m'explique: j'utilise un classeur dans lequel je rentre dans les colo


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,524 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales