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)

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

Membre Club

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

Membre Club
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 LongByVal 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(1CStr(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 < Then
                RoundNumber = CDbl(Mid$(dValue, 1, InStr(1, dValue, DecimalSeparator)))
            ElseIf vartemp > 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

Membre Club

Ca arrondit la valeur a 0.25 près


mercredi 28 mai 2008 à 16:05:00 | Re : arrondir valeur

mortalino

Membre Club
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

Membre Club
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

Membre Club

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+


1 2

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


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.