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 arrondir un nombre à la valeur supérieur dès que le premier chiffre après la virgule est >0 [ par ndaseraphin ] slt,je souhaite de l'aide. En faite je veux arrondir un nombre à virgule à la valeur supérieur dès que le premier chiffre après la virgule est supérie recuperer la valeur d'une cellule avec une liste deroulante [ par repiet95 ] Bonjour, Je suis debutant en visual basic et j'essaaye de faire des fonctions pour excel. Pour l'instant j'ai fait une macro qui permet d'extraire de Obtenir la valeur de la numérotation à partir d'un module VB [ par Tealck ] Bonjour à tous,J'ai un module VB qui transforme le texte seléctionné en language HTML.Tout marche bien (gras, italique, styles, tableau, etc !)Malheur comment obtenir une valeur dans une autre table access ?? [ par younes3005 ] bonjour, je suis un débutant en programmation access, je travaille sur un petit projet où je doit affecter une donnée à une zone de texte (textbox) qu comment recherchez un valeur dans une colonnes et la comparer si pareil renvoyer la valeur dans une autre celulle [ par qcsylvain ] Bonjour, sa fait des semaines que je cherche une facon de crée ce code, je travail avec excel vba 2007jai 2 feuille dans mon classeur "2" et  "Feuil1" Recuperer une valeur lors du deploiment [ par ladil007 ] Salut;je  veux creer un setup pour mon programme sous visual studio 2008 code vb.je veux que pendant l'instalation l'utilisateur fourni un URL.cet URL Récupérer une formule et non la valeur d'une feuille Excel [ par DeWinDev ] Hello,Je développe sous Windev et VB, et je suis à la recherche d'une méthode, class, dll, ...afin de pouvoir récupérer la formule et non le résultat vb.net [ par magicabdou ] stp j ai besoin d une fonction qui compare la valeur entré avec des autres dans une liste prédéfini ,une fois qu'il trouve une valeur plus grande dans parcourir une Listbox prédéfini "vb.net 2005" [ par magicabdou ] stp j ai besoin d une méthode qui compare la valeur entré avec des autres dans une liste prédéfini ,une fois qu'il trouve une valeur plus grande dans


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

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

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,359 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é.