Problème d'arrondi (arrondi au chiffre inférieur)

  • Initiateur de la discussion Initiateur de la discussion beegees
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

beegees

XLDnaute Occasionnel
Bonsoir tout le monde,

J'ai une cellule qui contient 76.45.

Un round(76.45,1) me donne 76.4

J'aimerai obtenir 76.5, comment puis-je faire ?

Merci d'avance pour l'aide.
 
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re…
En multipliant un nombre (non nul) par 1,000000000001 on en augmente légèrement sa valeur absolue. C'est suffisant pour corriger le vice de fabrication de la fonction Round(). Il y a évidemment une limite à l'exercice : les nombres à traiter ne doivent pas être trop grands en valeur absolue.


Exemples :
  1. x = 0,45 ; x * 1,000000000001 = 0,45000000000045
  2. y = 100000000000.45 ; y * 1,000000000001 = 100000000000,55
Dans le premier cas les arrondis à 1, 2, 3 chiffres sont corrects :
0,4 ; 0,45 ; 0,450.
Mais pas dans le second :
100000000000,6 ; 100000000000,55 ; 100000000000,550.
(On attend 100000000000,5 ; 100000000000,45 ; 100000000000,450.)
ROGER2327
#5053


Samedi 14 Pédale 138 (Sabbat, V)
18 Ventôse An CCXIX
2011-W10-2T09:39:48Z
 
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re…
Re,

Pour Roger :
Pourquoi ne pas additionner (au lieu de multiplier) un petit reliquat :
1+0.1^9 ou 1+1/9^9
Le nombre de départ n'a plus aucune importance.
C'est une voie possible. Mais le champ d'application est beaucoup plus restreint. Voir le classeur joint testant les fonctions suivantes :
VB:
Function hoerwind(x#)
  Application.Volatile
  hoerwind = Round(1 / 9 ^ 9 + x, 1)
End Function

Function Roger2327(x#)
  Application.Volatile
  Roger2327 = Round(1.000000000001 * x, 1)
End Function
ROGER2327
#5055


Samedi 14 Pédale 138 (Sabbat, V)
18 Ventôse An CCXIX
2011-W10-2T10:58:16Z
 

Pièces jointes

Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re

Excusez moi, mais j'avais mis machinalement le fichier en Xl2007 (c'est vrai qu'on ne pense pas toujours à ceux qui sont sous Xl2003 😱).

Donc je remets une solution avec Roundup sur le fichier de Roger.

Ce qui donnerait pour une fonction:

Code:
Function ArrondiSup1(cel As Range)
ArrondiSup1 = WorksheetFunction.RoundUp(cel, 1)
End Function
 

Pièces jointes

Dernière édition:
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Bonjour à tous,

N'ayant pas peur de surenchérir dans le moche (voir mon dernier post) une solution que j'intègre au classeur de Roger et fonctionnant donc sur ces valeurs. Cordialement

KD

Edit : je n'avais pas rafraichi l'écran avant de poster, la fonction de MJ13 est plus élégante, sans aucun doute 🙂
 

Pièces jointes

Dernière édition:
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re,

Pour moi la solution de Roger2327 fait la même chose que mon addition de 0.004 !?
mais bon, peut-être que je me trompe 😉

a+
 
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re...
Re

Excusez moi, mais j'avais mis machinalement le fichier en Xl2007 (c'est vrai qu'on ne pense pas toujours à ceux qui sont sous Xl2003 😱).

Donc je remets une solution avec Roundup sur le fichier de Roger.

Ce qui donnerait pour une fonction:

Code:
Function ArrondiSup1(cel As Range)
ArrondiSup1 = WorksheetFunction.RoundUp(cel, 1)
End Function
Il est certain que cette solution est la plus correcte, car la fonction d'Excel est correcte. Le problème est que notre ami veut utiliser la fonction d'arrondi de VisualBasic, qui est défectueuse (et que le Bill's Gang ferait bien de nous corriger au lieu de sortir à n'en plus finir des versions plus ou moins bien maquillées du même logiciel).​
ROGER2327
#5056


Samedi 14 Pédale 138 (Sabbat, V)
18 Ventôse An CCXIX
2011-W10-2T13:17:49Z
 
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Re…
(…)
Pour moi la solution de Roger2327 fait la même chose que mon addition de 0.004 !?
(…)
Pas tout à fait.​
ROGER2327
#5057


Samedi 14 Pédale 138 (Sabbat, V)
18 Ventôse An CCXIX
2011-W10-2T13:39:37Z
 

Pièces jointes

Re : Problème d'arrondi (arrondi au chiffre inférieur)

Suite…
La solution de KenDev est apparemment toujours correcte. Elle est d'autant plus intéressante qu'on peut, me semble-t-il, la simplifier un peu :
VB:
Function KenDev#(x#) 'Fonction test de KenDev rationalisée.
Dim z%
    Application.Volatile 'Facultatif selon l'usage.
    z = InStr(1, CStr(x), ",")
    If Right(Left(CStr(-x * (z <> 0)), z + 2), 1) = "5" And Len(CStr(x)) > z + 1 Then
        KenDev = Int(10 * x - (x > 0)) / 10
    Else
        KenDev = Round(x, 1)
    End If
End Function
J'ai, comme d'habitude, fait d'assez nombreux tests, mais je n'ai évidemment pas épuisé tous les cas. À tester, donc…​
ROGER2327
#5058


Samedi 14 Pédale 138 (Sabbat, V)
18 Ventôse An CCXIX
2011-W10-2T16:59:53Z
 
Re : Problème d'arrondi (arrondi au chiffre inférieur)

Bonsoir à tous,

@Roger: Merci Roger pour l'euphémisme... 🙄 Et surtout pour le code. J'avais conscience que j'aurai pu l'écrire en moins de lignes mais je n'imaginais pas pouvoir passer de 33 lignes à 7 (dont une facultative). Ce code va probablement m'être très profitable.

Cordialement

KD
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
23
Affichages
679
Retour