4/5 (12 avis)
Snippet vu 26 459 fois - Téléchargée 32 fois
Function GetRound(ByVal Expression As String, _ Optional DecimalDigitsNumber As Byte = 0, _ Optional RoundToFive As Boolean = True) As Double 'Signature 1 : fonction d'arrondi paramétrable (compatible Excel 95/97) 'Contrairement à la fonction "Round", le type d'approximation est modifiable 'et surtout constant quel que soit le nombre de décimales. Dim ApproximationValue As Single If RoundToFive = True Then ApproximationValue = 0.5 Else ApproximationValue = 0.49 End If GetRound = CDbl(Expression) * (10 ^ DecimalDigitsNumber) GetRound = Int(GetRound + ApproximationValue) * (10 ^ -DecimalDigitsNumber) End Function Function GetRound(ByVal Expression As String, _ Optional DecimalDigitsNumber As Integer = 0, _ Optional RoundToFive As Boolean = True) As Double 'Signature 2 : fonction d'arrondi paramétrable (compatible Excel 95/97) 'Contrairement à la fonction "Round", le type d'approximation est modifiable 'et surtout constant quel que soit le nombre de décimales. 'De surcroît, cette version permet d'arrondir selon les unités, dizaines, centaines etc. Dim ApproximationValue As Single If RoundToFive = True Then ApproximationValue = 0.5 Else ApproximationValue = 0.49 End If GetRound = CDbl(Expression) * (10 ^ DecimalDigitsNumber) GetRound = Int(GetRound + ApproximationValue) * (10 ^ -DecimalDigitsNumber) End Function Function SimpleRound(ByVal AValue As Double, _ Optional ADigit As Integer = -2) As Double ' Contrairement à la fonction Round cette fonction n'applique pas la règle ' de l'arrondi bancaire. SimpleRound utilise l'arrondi arithmétique asymétrique. ' Cette méthode arrondit toujours vers la valeur la plus grande. ' Arguments : ' - AValue est la valeur à arrondir, ' - ADigit indique la puissance de dix à laquelle vous voulez arrondir AValue. SimpleRound = AValue * (10 ^ -ADigit) SimpleRound = Fix(SimpleRound + 0.5) * (10 ^ ADigit) End Function
3 avril 2008 à 16:31
La fonction Round de VB6 utilise l'arrondi bancaire pour déterminer comment arrondir la valeur qui se trouve exactement au milieu des deux valeurs ayant le nombre de chiffres significatifs souhaité. La convention est d'aller au nombre pair le plus proche ainsi 1, 5 et 2,5 sont arrondis à 2 alors que 3,5 et 4,5 sont arrondis à 4.
11 avril 2007 à 13:45
15 févr. 2007 à 22:38
Je viens de m'inscrire, et en furetant je découvre cette petite fonction m'aurais bien servi il y a à peine 3 semaines !
surtout pour les arrondis négatif impossible avec round.
Je cherchais a arrondir un chiffre sur 5 positions exemple : de 24876 je devais optenir 20000.
Je viens de tester ton code et il marche nickel !!!
Bravo
Igloobel
PS : testé sur une version 2003
20 oct. 2006 à 13:21
Function GetRound(ByVal Expression As String, _
Optional DecimalDigitsNumber As Integer = 0, _
Optional RoundToFive As Boolean = True) As Double
De la sorte, vous pourrez, par exemple, vous pourrez effectuer l'appel suivant :
call getRound("124", -1)
22 juil. 2005 à 17:09
voici la correspondance :
GetRound(1.25,1, True)=AsymArith(1.25, 10)
GetRound(1.225,2, True)=AsymArith(1.225, 100)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.