Microsoft 365 Arrondir une valeur avant de la coller

pat66

XLDnaute Impliqué
Bonsoir le forum,

Je n'arrive pas à arrondir la valeur de M25 (168536) avant de la coller dans R16 ainsi (168500), j'ai bien essayé avec Round, mais je n'y arrive pas.
pourriez vous m'aider, svp

VB:
Sheets("[B]Feuil1[/B]").Range("R16") = Sheets("[B]Feuil2[/B]").Range("$M$25")

merci beaucoup
 
Solution
Re,
Vous ne pourriez pas donner toutes les infos d'un coup, cela éviterait de reworker en permanence.
Essayez ça :
VB:
Function Arrondi(N)
    If CInt(Right(N, 3)) > 500 Then Ajout = 1 Else Ajout = 0
    Arrondi = (Ajout + Int(N / 1000)) * 1000
End Function
Donc c'est arrondi au milieu inférieur ou supérieur. ( donc rien à voir avec la première demande )
de 168000 à 168500 donnera 168000
de 168501 à 168999 donnera 169000

pat66

XLDnaute Impliqué
Bonsoir Sylvanu,

merci pour votre aide,

mais si A=168100 et que je souhaite arrondir à 168000, ça fonctionne aussi ? mais j'aurai 168100, alors je préfère arrondir à 168000 ce sera plus simple

merci
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Ben non ....
168100 donnerait 168100 :)
Donnez plus de détails sur ce que vous voulez.

Si la règle est si le nombre se termine avec 2 zéros on arrondi au millier inférieur sinon à la centaine inférieure, alors une approche possible avec une fonction :
Code:
Function Arrondi(N)
    If Int(N / 100) * 100 = N Then D = 1000 Else D = 100
    Arrondi = Int(N / D) * D
End Function
Son utilisation serait alors du genre :
Code:
Sub Essai()
    Sheets("Feuil1").Range("R16") = Arrondi(Sheets("Feuil2").Range("$M$25"))
End Sub
 
Dernière édition:

pat66

XLDnaute Impliqué
re,

C'est parfait, j'ai juste modifié Else D = 100 par Else D = 1000 pour arrondir au millier inférieur

pour être complet, pourriez vous m'indiquer comment arrondir au millier supérieur, afin que si :
A < 168500 donne 168000
A > 168600 donne 169000

en tout cas, merci beaucoup Sylvanu
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Vous ne pourriez pas donner toutes les infos d'un coup, cela éviterait de reworker en permanence.
Essayez ça :
VB:
Function Arrondi(N)
    If CInt(Right(N, 3)) > 500 Then Ajout = 1 Else Ajout = 0
    Arrondi = (Ajout + Int(N / 1000)) * 1000
End Function
Donc c'est arrondi au milieu inférieur ou supérieur. ( donc rien à voir avec la première demande )
de 168000 à 168500 donnera 168000
de 168501 à 168999 donnera 169000
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
746

Statistiques des forums

Discussions
315 087
Messages
2 116 082
Membres
112 653
dernier inscrit
flapynot7x