OVH Cloud OVH Cloud

Fonction rounding

4 réponses
Avatar
Gary
Bonjour,

J'ai Access 97 et j'ai cree une requete qui comprend une colonne avec une
formule qui me divise un montant par plusieures pourcentages. Le resultat me
donne des chiffres avec des decimales. J'aimerais rounder ces montants pour
avoir une addition qui me donne un 100% du montant initial (probleme de
decimales).

Quand jécris la fonction ROUND, Access n'accepte pas cette fonction.

Est-ce lie a la version d'Access? Il me semble que cette fonction existe, non?

Merci pour votre aide et reponse.
Salutations

4 réponses

Avatar
3stone
Salut,

"Gary"
| J'ai Access 97 et j'ai cree une requete qui comprend une colonne avec une
| formule qui me divise un montant par plusieures pourcentages. Le resultat me
| donne des chiffres avec des decimales. J'aimerais rounder ces montants pour
| avoir une addition qui me donne un 100% du montant initial (probleme de
| decimales).


Pour "rounder" regarde ceci :
http://www.mvps.org/accessfr/modules/mdl0054.htm

;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Gary
Merci pour le lien.

Je suis un peu perdu avec les modules. Comment je dois utiliser le module
dans ma requete. J'ai copie le module dans ma base mais apres je ne sais
vraiment pas quoi faire. Tu peux m'aider, merci beaucoup.
/Gary

Public Function Round( _
ByVal Number As Variant, NumDigits As Long, _
Optional UseBankersRounding As Boolean = False) As Double
'
' ---------------------------------------------------
' De "Visual Basic Language Developer's Handbook"
' par Ken Getz et Mike Gilbert
' Copyright 2000; Sybex, Inc. All rights reserved.
' ---------------------------------------------------
'
Dim dblPower As Double
Dim varTemp As Variant
Dim intSgn As Integer

If Not IsNumeric(Number) Then
' Lever une erreur si le paramètre
' n'est pas valide
Err.Raise 5
End If
dblPower = 10 ^ NumDigits
' Vérifier le signe
' intSgn contiendra -1, 0, ou 1.
intSgn = Sgn(Number)
Number = Abs(Number)

' l'arrondissement lui-même.
varTemp = CDec(Number) * dblPower + 0.5

' et au plus proche nombre pair, si nécessaire
If UseBankersRounding Then
If Int(varTemp) = varTemp Then
' On peut également utiliser:
' varTemp = varTemp + (varTemp Mod 2 = 1)
' mais je déteste compter sur le fait que
' -1 = Vrai, à l'intérieur du code.
If varTemp Mod 2 = 1 Then
varTemp = varTemp - 1
End If
End If
End If
' le calcul est terminé
Round = intSgn * Int(varTemp) / dblPower
End Function




Salut,

"Gary"
| J'ai Access 97 et j'ai cree une requete qui comprend une colonne avec une
| formule qui me divise un montant par plusieures pourcentages. Le resultat me
| donne des chiffres avec des decimales. J'aimerais rounder ces montants pour
| avoir une addition qui me donne un 100% du montant initial (probleme de
| decimales).


Pour "rounder" regarde ceci :
http://www.mvps.org/accessfr/modules/mdl0054.htm

;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/




Avatar
3stone
Salut,

"Gary"
| Je suis un peu perdu avec les modules. Comment je dois utiliser le module
| dans ma requete. J'ai copie le module dans ma base mais apres je ne sais
| vraiment pas quoi faire. Tu peux m'aider, merci beaucoup.


Tu colle la fonction dans un module standard (onglet module)
et tu le sauve sous "mod_Calculs" par exemple

ensuite, tu l'utilise comme un fonction normale d'Access


Dans une requête, par exemple :

Valeur: Round([lechamp];2)

pour arrondir [lechamp] à 2 décimales


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Gary
Merci:))))) Ca fonctionne super bien.
Bon week-end
Gary


Salut,

"Gary"
| Je suis un peu perdu avec les modules. Comment je dois utiliser le module
| dans ma requete. J'ai copie le module dans ma base mais apres je ne sais
| vraiment pas quoi faire. Tu peux m'aider, merci beaucoup.


Tu colle la fonction dans un module standard (onglet module)
et tu le sauve sous "mod_Calculs" par exemple

ensuite, tu l'utilise comme un fonction normale d'Access


Dans une requête, par exemple :

Valeur: Round([lechamp];2)

pour arrondir [lechamp] à 2 décimales


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/