Je ne connais pas Currency, sauf de nom, faut voir...
Le problème est que le multiplicateur est bon à deux décimal, faux à trois, or quand je formate l'animal arrondi en même temps, rendant ma seconde décimal parfois fausse ! Certes je pourrais très bien bidouiller ça en texte, mais j'essayais de la faire en arithmétique...
"François Picalausa" a écrit dans le message de news: On 0304 "LE TROLL" <le wrote:
format(double,"00.00") = 8,53
On 0305,
De facto la TVA est aussi paye videmment sur la COM, donc dans cet ordre.
Hello,
Je n'ai pas suivit toute la discussion donc il se peut que mon commentaire ne soit pas pertinent, mais - excepté le "problème" d'arrondi - le type double est-il vraiment le type voulu ? Il existe Currency est probablement plus approprié (particulièrement au niveau précision) :
<citation src="documentation VBA"> The Currency data type is useful for calculations involving money [...] in which accuracy is particularly important. </citation>
François
Bonjour François,
Merci :o)
Je ne connais pas Currency, sauf de nom, faut voir...
Le problème est que le multiplicateur est bon à deux décimal, faux à
trois, or quand je formate l'animal arrondi en même temps, rendant ma
seconde décimal parfois fausse ! Certes je pourrais très bien bidouiller ça
en texte, mais j'essayais de la faire en arithmétique...
"François Picalausa" <fpicalausa@gmail.com> a écrit dans le message de
news:25996e0f-9d95-482d-8e57-6e0a9783dc28@f37g2000vbf.googlegroups.com...
On 0304 "LE TROLL" <le tr...@enfer.fr> wrote:
format(double,"00.00") = 8,53
On 0305,
De facto la TVA est aussi paye videmment sur la COM, donc dans cet ordre.
Hello,
Je n'ai pas suivit toute la discussion donc il se peut que mon
commentaire ne soit pas pertinent, mais - excepté le "problème"
d'arrondi - le type double est-il vraiment le type voulu ? Il existe
Currency est probablement plus approprié (particulièrement au niveau
précision) :
<citation src="documentation VBA">
The Currency data type is useful for calculations involving money
[...] in which accuracy is particularly important.
</citation>
Je ne connais pas Currency, sauf de nom, faut voir...
Le problème est que le multiplicateur est bon à deux décimal, faux à trois, or quand je formate l'animal arrondi en même temps, rendant ma seconde décimal parfois fausse ! Certes je pourrais très bien bidouiller ça en texte, mais j'essayais de la faire en arithmétique...
"François Picalausa" a écrit dans le message de news: On 0304 "LE TROLL" <le wrote:
format(double,"00.00") = 8,53
On 0305,
De facto la TVA est aussi paye videmment sur la COM, donc dans cet ordre.
Hello,
Je n'ai pas suivit toute la discussion donc il se peut que mon commentaire ne soit pas pertinent, mais - excepté le "problème" d'arrondi - le type double est-il vraiment le type voulu ? Il existe Currency est probablement plus approprié (particulièrement au niveau précision) :
<citation src="documentation VBA"> The Currency data type is useful for calculations involving money [...] in which accuracy is particularly important. </citation>
François
David
Bonjour Le Troll,
Puisque vous constatez vous même de manière intangible que Format arrondi, alors vous reste une seule solution : arrondissez avec une des solutions que l'on vous proposé ici même et terminez l'affichage avec Format qui n'aura plus rien à arrondir puisque votre programme l'aura fait à sa place. C'est ce que je fais dans mon programme de facturation et je peux vous garantir qu'il n'y a jamais aucune erreur. Je le sais car les chiffres totaux de mes factures sont réintroduit dans un programme de comptabilité extérieure et qu'ils sont à 100% validé - ce qui n'était pas le cas voici quelques années lorsque je n'utilisais pas un arrondi "fait maison".
a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"LE TROLL" <le a écrit dans le message de news:
Bonjour David,
Ce n'est pas pour ma part un problème d'arrondi, si Format n'arrondissait pas.
En fait j'ai un problème de précision car je tente d'avoir avec une multiplication unique 0,7108 le même résultat que X - 19,6% (tva) et du reste -15% de commission, alors selon le montant de base, parfois c'est bon, d'autres fois ça varie de + ou - 0.01 Je ne sais donc pas si mathématiquement je peux avec une seule opération en faire deux, surtout avec ce vilain "Format" qui arrondi...
Voila ce que j'utilise pour faire l'arrondi dans mon programme de facturation et qui n'a jamais été pris en défaut depuis plusieurs années.
Public Function Trunc(ByVal x As Double, ByVal nbDec As Long) As Double '-- Fonction de troncature à nbDec après la virgule
Dim strTemp As String Dim k As Long
strTemp = Trim$(Str(x)) k = InStr(1, strTemp, ".") If (k = 0) Then '-- Il s'agit d'un nombre entier, on n'y touche pas Trunc = x Else '-- On récupère nbDec chiffres derrière le point Trunc = Val(Left$(strTemp, k + nbDec)) End If
End Function
Public Function MyRound(ByVal x As Double, ByVal nbDec As Long) As Double '-- Fonction d'arrondi à nbDec après la virgule (x>0)
a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"Jean-marc" a écrit dans le message de news: 49aee6a3$0$2855$
Jacques93 wrote:
Hello,
Format effectue un arrondi, qui est d'ailleurs parfois préféré à celui de Round, essaie :
Et pour tout savoir sur les arrondis en VB, je conseille la lecture de ce petit article qui explique tout ça : http://faq.vb.free.fr/index.php?question8
Pour les plus curieux, cet excellent article de la KB Microsoft qui propose une dizaine de fonction d'arrondis, y compris bien sur l'équivalent du "truncate" ci-dessus mentionné: http://support.microsoft.com/?scid=kb;en-us;196652&x"&y
Puisque vous constatez vous même
de manière intangible que Format arrondi,
alors vous reste une seule solution :
arrondissez avec une des solutions que l'on vous proposé
ici même et terminez l'affichage avec Format qui n'aura plus
rien à arrondir puisque votre programme l'aura fait
à sa place.
C'est ce que je fais dans mon programme de facturation
et je peux vous garantir qu'il n'y a jamais aucune erreur.
Je le sais car les chiffres totaux de mes factures sont réintroduit
dans un programme de comptabilité extérieure et qu'ils
sont à 100% validé - ce qui n'était pas le cas voici
quelques années lorsque je n'utilisais pas un arrondi
"fait maison".
a+ Jean-Pol Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.
"LE TROLL" <le troll@enfer.fr> a écrit dans le message de news:
E55A2957-A500-48AC-9CDE-431E83C14995@microsoft.com...
Bonjour David,
Ce n'est pas pour ma part un problème d'arrondi, si Format
n'arrondissait pas.
En fait j'ai un problème de précision car je tente d'avoir avec une
multiplication unique 0,7108 le même résultat que X - 19,6% (tva) et du
reste -15% de commission, alors selon le montant de base, parfois c'est
bon, d'autres fois ça varie de + ou - 0.01
Je ne sais donc pas si mathématiquement je peux avec une seule opération
en faire deux, surtout avec ce vilain "Format" qui arrondi...
"David" <bs173990@skynet.be> a écrit dans le message de
news:%23qn9NHRnJHA.5980@TK2MSFTNGP06.phx.gbl...
Bonjour à tous,
Voila ce que j'utilise pour faire l'arrondi dans mon
programme de facturation et qui n'a jamais été pris en défaut
depuis plusieurs années.
Public Function Trunc(ByVal x As Double, ByVal nbDec As Long) As Double
'-- Fonction de troncature à nbDec après la virgule
Dim strTemp As String
Dim k As Long
strTemp = Trim$(Str(x))
k = InStr(1, strTemp, ".")
If (k = 0) Then
'-- Il s'agit d'un nombre entier, on n'y touche pas
Trunc = x
Else
'-- On récupère nbDec chiffres derrière le point
Trunc = Val(Left$(strTemp, k + nbDec))
End If
End Function
Public Function MyRound(ByVal x As Double, ByVal nbDec As Long) As Double
'-- Fonction d'arrondi à nbDec après la virgule (x>0)
a+ Jean-Pol
Site Web : www.colovid.be
Site Web perso pour le fun : http://users.skynet.be/DAVID/
Cette page est transmise avec des électrons 100% recyclés.
"Jean-marc" <jm@nowhere.invalid> a écrit dans le message de news:
49aee6a3$0$2855$ba620e4c@news.skynet.be...
Jacques93 wrote:
Hello,
Format effectue un arrondi, qui est d'ailleurs parfois préféré à celui
de Round, essaie :
Et pour tout savoir sur les arrondis en VB, je conseille la lecture de
ce
petit article qui explique tout ça :
http://faq.vb.free.fr/index.php?question8
Pour les plus curieux, cet excellent article de la KB Microsoft
qui propose une dizaine de fonction d'arrondis, y compris
bien sur l'équivalent du "truncate" ci-dessus mentionné:
http://support.microsoft.com/?scid=kb;en-us;196652&x"&y
Puisque vous constatez vous même de manière intangible que Format arrondi, alors vous reste une seule solution : arrondissez avec une des solutions que l'on vous proposé ici même et terminez l'affichage avec Format qui n'aura plus rien à arrondir puisque votre programme l'aura fait à sa place. C'est ce que je fais dans mon programme de facturation et je peux vous garantir qu'il n'y a jamais aucune erreur. Je le sais car les chiffres totaux de mes factures sont réintroduit dans un programme de comptabilité extérieure et qu'ils sont à 100% validé - ce qui n'était pas le cas voici quelques années lorsque je n'utilisais pas un arrondi "fait maison".
a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"LE TROLL" <le a écrit dans le message de news:
Bonjour David,
Ce n'est pas pour ma part un problème d'arrondi, si Format n'arrondissait pas.
En fait j'ai un problème de précision car je tente d'avoir avec une multiplication unique 0,7108 le même résultat que X - 19,6% (tva) et du reste -15% de commission, alors selon le montant de base, parfois c'est bon, d'autres fois ça varie de + ou - 0.01 Je ne sais donc pas si mathématiquement je peux avec une seule opération en faire deux, surtout avec ce vilain "Format" qui arrondi...
Voila ce que j'utilise pour faire l'arrondi dans mon programme de facturation et qui n'a jamais été pris en défaut depuis plusieurs années.
Public Function Trunc(ByVal x As Double, ByVal nbDec As Long) As Double '-- Fonction de troncature à nbDec après la virgule
Dim strTemp As String Dim k As Long
strTemp = Trim$(Str(x)) k = InStr(1, strTemp, ".") If (k = 0) Then '-- Il s'agit d'un nombre entier, on n'y touche pas Trunc = x Else '-- On récupère nbDec chiffres derrière le point Trunc = Val(Left$(strTemp, k + nbDec)) End If
End Function
Public Function MyRound(ByVal x As Double, ByVal nbDec As Long) As Double '-- Fonction d'arrondi à nbDec après la virgule (x>0)
a+ Jean-Pol Site Web : www.colovid.be Site Web perso pour le fun : http://users.skynet.be/DAVID/ Cette page est transmise avec des électrons 100% recyclés.
"Jean-marc" a écrit dans le message de news: 49aee6a3$0$2855$
Jacques93 wrote:
Hello,
Format effectue un arrondi, qui est d'ailleurs parfois préféré à celui de Round, essaie :
Et pour tout savoir sur les arrondis en VB, je conseille la lecture de ce petit article qui explique tout ça : http://faq.vb.free.fr/index.php?question8
Pour les plus curieux, cet excellent article de la KB Microsoft qui propose une dizaine de fonction d'arrondis, y compris bien sur l'équivalent du "truncate" ci-dessus mentionné: http://support.microsoft.com/?scid=kb;en-us;196652&x"&y