Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres La formule ARRONDI

Neo Hyuga

XLDnaute Junior
hello,

je suis sous excel 2007 en francais,

mon soucis du jour, j'ai besoin d'une formule qui m'arrondisse un chiffre rentré dans la même cellule selon ces criteres :
- de 0 a 5.0, arrondir a la dizaine inférieur
- de 5.5 a 9.5 arrondir a la dizaine supérieur

exemple :
73.5 devient 70
ou
115.5 devient 120

Le problème c'est que j'arrive pas a savoir si la cellule source et cible peuvent être la même ?

une idée svp ?

merci d'avance

PS : J'ai pas mis de fichier, je me suis dit que c'etait assez clair comme ca, mais si necessaire j'en mettrais un
 

job75

XLDnaute Barbatruc
Bonjour Neo Hyuga, le forum,

Une autre solution :
Code:
=PLANCHER(A1;10)+10*(A1-PLANCHER(A1;10)>5)
Cette formule prend 37 octets en mémoire.

Celle du post #4 prend 63 octets (la fonction SI en prend 18).

A+
 

job75

XLDnaute Barbatruc
Pour appliquer la formule sur la cellule modifiée voyez le fichier joint et cette macro :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For Each c In [C4:F15] 'plage à adapter
    If IsNumeric(CStr(c)) Then c = Application.Floor(c, 10) - 10 * (c - Application.Floor(c, 10) > 5)
Next
Application.EnableEvents = True 'réactive les évènements
End Sub
 

Pièces jointes

  • Classeur(1).xlsm
    16.2 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonjour.
L'expression nécessaire me semble bien plus simple : c.Value = -10 * Int(0.5 - c.Value / 10)
Pourquoi les nombres entiers impaires multiples de 5 doivent-ils être arrondi à la dizaine inférieure ?
 

Dranreb

XLDnaute Barbatruc
Si une valeur imperceptiblement supérieure à une valeur de basculement devait aussi être arrondie à la dizaine inférieure, il vaudrait mieux prendre c.Value = 10 * Int((c.Value + 4.999999) / 10)
 

oguruma

XLDnaute Occasionnel
Rappel de quelques principes sur le fonctionnement des arrondis et cette méthode est imparable.
De plus maintenant avec la fonction Lambda de O365 c'est un jeux d'enfant.

Ci-dessous la méthode. Parfois le tout automatique ne fait pas toujours ce que l'on veut.
Pour les anciens qui ont connu COBOL ANS 74/76 la fonction ROUNDED comportait des failles et on était obligé de refaire notre propre arrondi
Je posterai à cette occasion un série Lambda_Rounded



A adapter selon le Nbr de décimales. Ce qu'il faut retenir
Arrondi à 2 décimales on ajoute 0.005, on multiplie par 100, on retient la valeur entière puis on divise par 100

Arrondi à 1 décimale on ajoute 0.05, on multiplie par 10, on retient la valeur entière puis on divise par 10

Arrondi à sans décimal on ajoute 0.5, on multiplie par 1, on retient la valeur entière puis on divise par 1
==>j'ai gardé le 1 volontairement pour bien montrer la logique, bien entendu on pourrait s'en passer

donc pour 3 décimales ou 4 décimales ou n décimales.... je vous laisse faire les conversions qui vont bien
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…