|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : arrondir valeur [ Langages dérivés / VBA ] (matth72)
Informations & options pour cette discussion
|
mercredi 28 mai 2008 à 15:30:00 |
arrondir valeur

matth72
|
Bonjour à tous
J’ai un tout petit problème je récupère une valeur d’un calcul par exemple 2,38 je voudrai arrondir la valeur à 2,5
J’ai essayé de convertir les valeurs avec CSng ou encore CInt mais en vain
Si une âme charitable peut m’aider merci d’avance
|
|
|
|
mercredi 28 mai 2008 à 16:02:19 |
Re : arrondir valeur

yvesyves
|
Tu n'as qu'à creer une fonction :
Private Sub Form_Load() MsgBox (ArrondiPerso(2.38)) End Sub Public Function ArrondiPerso(Number As Double) As Single Dim MonDecimale As Double MonDecimale = CDbl(Number - Int(Number)) Dim Resultat As Single Select Case MonDecimale Case Is > 0.75 Resultat = Int(Number) + 1 Case Is > 0.5 Resultat = Int(Number) + 0.75 Case Is > 0.25 Resultat = Int(Number) + 0.5 Case Is > 0 Resultat = Int(Number) + 0.25 End Select ArrondiPerso = Resultat End Function
|
|
|
|
mercredi 28 mai 2008 à 16:03:24 |
Re : arrondir valeur

mortalino
|
Salut, je ne sais pas si c'est la meilleure façon de procéder, mais je t'en propose une (ça m'aura occupé quelques minutes  )  Option Explicit
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 Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long
Enum eMode Inferior = 0 Superior = 1 Half = 2 End Enum
Private Const LOCALE_SDECIMAL = &HE
Public Property Get DecimalSeparator() As String Dim nLength As Long Dim nLocale As Long nLocale = GetUserDefaultLCID() nLength = GetLocaleInfo(nLocale, LOCALE_SDECIMAL, vbNullString, 0) - 1 DecimalSeparator = Space$(nLength) GetLocaleInfo nLocale, LOCALE_SDECIMAL, DecimalSeparator, nLength End Property
Function RoundNumber(ByVal dValue As Double, Mode As eMode) As Double Dim vartemp As Integer If InStr(1, CStr(dValue), DecimalSeparator) Then Select Case Mode Case Inferior RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator))) Case Superior RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator))) + 1 Case Half vartemp = CInt(Right$(Round(dValue, 1), 1)) If vartemp < 3 Then RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator))) ElseIf vartemp > 7 Then RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator))) + 1 Else RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator))) + 0.5 End If End Select Else RoundNumber = dValue End If End Function
Sub test() Debug.Print RoundNumber(2, Inferior) Debug.Print RoundNumber(2, Superior) Debug.Print RoundNumber(2, Half) Debug.Print RoundNumber(2.3, Inferior) Debug.Print RoundNumber(2.3, Superior) Debug.Print RoundNumber(2.3, Half) Debug.Print RoundNumber(2.8, Inferior) Debug.Print RoundNumber(2.8, Superior) Debug.Print RoundNumber(2.8, Half) End Sub
 ~ Mortalino ~ Colorisation automatique@++ le mystérieux chevalier,"Provençal, le gaulois" Forum Office & VBA
|
|
|
|
mercredi 28 mai 2008 à 16:04:57 |
Re : arrondir valeur

yvesyves
|
Ca arrondit la valeur a 0.25 près
|
|
|
|
mercredi 28 mai 2008 à 16:05:00 |
Re : arrondir valeur

mortalino
|
Arf.. bah voilà, je me suis fait ch**r pour rien, surtout avec mes Mid.. Bien vu le code, c'est une façon à laquelle je n'avais pas pensé @++ le mystérieux chevalier,"Provençal, le gaulois" Forum Office & VBA
|
|
|
|
mercredi 28 mai 2008 à 16:55:24 |
Re : arrondir valeur

yvesyves
|
Salut Mortalino, Désolé :S. J'ai une petite question. Pourrais tu m'expliquer ce qu'est GetLocalInfo, par curiosité. Merci à toi
|
|
|
|
mercredi 28 mai 2008 à 17:21:36 |
Re : arrondir valeur

matth72
|
merci de ta reponse sa fonction mais pas comme je voudrais
vu que je suis pressé sa fera l'affaire
encore merci
a+
|
|
|
|
mercredi 28 mai 2008 à 17:27:40 |
Re : arrondir valeur

matth72
|
desoler j'avais pas vu qu'il y avait tand de reponse en tout cas merci des infos a++
|
|
|
|
mercredi 28 mai 2008 à 19:34:39 |
Re : arrondir valeur

jmfmarques
|
Bonjour, est-ce ce que tu souhaites ?N
Private Sub Command1_Click() Dim toto As Double toto = 1.22 toto = Int(toto) + IIf((toto - Int(toto)) >= 0.25, 0.5, 0) MsgBox toto End Sub
|
|
|
|
jeudi 29 mai 2008 à 08:56:35 |
Re : arrondir valeur

matth72
|
merci je vais travailler dessus
a+
|
|
|
Cette discussion est classé dans : valeur, arrondir
Répondre à ce message
Sujets en rapport avec ce message
Empêcher d'arrondir [ par mictou ]
Mictou: Bonjour, j'ai un petit problème: j'ai une variable qui reçoit une valeur de 327,75. Je dois diviser cette variable par cent et obtenir 3,27. M
Comment affecté une valeur de cellule excel dans un signé word [ par mathiasttb ]
J'ai besoin d'automatisé une série de valeur dans un rapport word provenant d'un classeur excel.
afectation dynamique de valeur à une liste [ par mygalous ]
je souhaiterais savoir comment ajouter dynamiquement des valeurs à une liste. enfin surtout l'API qui le permet.merci!
Probleme valeur defaut sur combobox [ par burt_reynolds ]
Je rempli une combobox avec des années par une requete select et je voudrai qu'à l'ouverture du formulaire la combobox prenne comme valeur par defaut
retour de valeur à la fin de l'application [ par dragon ]
j'aimerais que l'application puisse retourner un 0 si une erreur est détecté. Je parle pas d'nue fonction, mais de l'exe. En C ou en Java, je suis cap
Longueur de string limitée sous excel [ par bug04 ]
Bonjour,j'essaie d'alimenter une variable string avec une valeur de longueur environ 2200 sous excel 2000.Quand je l'affiche, celle-ci est tronquée et
Dernière valeur d'une variable static utilisée dans une autre procédure... [ par kate1 ]
Bonjour,je souhaiterais savoir la façon dont je dois procéder afin d'utiliser successivement 2 procédures (générés par le click de 2 boutons différent
passage de paramètres [ par Lemaraud ]
Salut les garsau démarrage de mon appli, dans le Private Sub Form_Load()je lance une ptite commande qui me donne une valeur à une variablecomment fair
variable static et passage de la valeur finale dans une autre procédure? [ par kate1 ]
Bonjour,je souhaiterais savoir la façon dont je dois procéder afin d'utiliser successivement 2 procédures (générés par le click de 2 boutons différent
Recup de la vitesse du proc dans la BDR [ par lucio57 ]
Bonjour,Je cherche à extraire la vitesse du processeur dans la BDRdans la clé Hardware\description\system\centralprocessor\0le champ ~MHz ce champ est
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|