Autres La formule ARRONDI

Neo Hyuga

XLDnaute Occasionnel
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
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

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

1690735629354.png


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:

Statistiques des forums

Discussions
315 096
Messages
2 116 173
Membres
112 677
dernier inscrit
Justine11