begin process at 2012 02 16 19:55:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

arrondir valeur


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

arrondir valeur

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ée 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 reporter valeur classeur1 vers classeur2 et arrondir [ par milouze974 ] Bonjour, Comment faire pour reporter les valeurs d'un classeur vers un autre et arrondir en même temps ces valeurs? Ci-dessous, une photo qui vous exp Arrondir directement la valeur d'une zone de texte [ par talined ] Bonjour, J'ai une question concernant la valeur d'une zone de texte. J'ai paramétré ma zone de texte en key press. Cette zone n'autorise que des cara recherche dans tableau multidirectionnel [ par wholehog2 ] bonjour à tous. Ma question va vous paraitre simple mais je cherche a obtenir la valeur de la 3 eme colonne d'un tableau par rapport à la valeur cher Cacher feuilles en fonction de valeur de deux cellules [ par miremate ] Bonjour, J'ai un fichier excel avec une trentaine de feuilles. J'ai besoin d'une macro qui cache toutes les feuilles du livre à l'exception de deux f Nombre d'occurence dans une plage de données d'une valeur saisie dans un text box [ par eltigre85 ] Salut, Je voudrai connaitre le nombre d'occurrence d'une valeur saisie dans un textbox dans une plage de données. La textbox est dans un userform en c Modifier valeur d'une clé registre [ par FaonManager ] Bonjour, j'ai un problème pour modifier la valeur d'une clé registre, j'utilise le code suivant mais il ne marche pas : [code=vb]Dim key As Microsoft vscrollar valeur par 0.2 et pas par 1 [ par petiflamand ] Bonjour , Avec un vscrollbar je n'arrive pas a changer la valeur par 0.2 a la place de 1 on est obliger de passer par un calcul ?? Merci Comment savoir si la valeur Text correspond à une entrée dans la liste d'un Combobox. [ par BasicZx81 ] Bonsoir à tous, j'ai encore un petit soucis avec un Combobox, il est paramétré pour que l'on ne puisse pas entrer autre chose que ce qu'il y a dans la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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 : 1,685 sec (3)

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