Insérer une formule =arrondi

Bonjour à tous,

Je souhaiterais que lorsque ma conditionnelle du code ci-dessous est rempli, qu'il remplace le contenu de la cellule par une formule =arrondi avec 2 chiffres après la virgule et avec le montant déjà inscris dans cette même cellule.

 Set MaPlage = Sheets(4).Range("F7" & ":F" & DernLigne + 1)
    For Each cel In MaPlage 'pour toutes les cellules de la plage
        If cel.Offset(, -5) = "2" Then
         cel.Value = Formula = "=arrondi(" & cel.Value & ";2)"
        End If
    Next
        

Mais je ne sais pas trop comment formuler cela.

Merci par avance pour votre aide.

Bonjour jeremy_91,

Je te propose ce code VBA (non testé car sans ton classeur) :

Option Explicit

Sub Essai()
  Dim MaPlage As Range, cel As Range, DernLigne As Long
  Application.ScreenUpdating = False: Application.Calculation = -4135
  With Worksheets(4) ' avec la 4ème feuille du classeur
    DernLigne = .Cells(Rows.Count, "F").End(xlUp).Row
   Set MaPlage = .Range("F7:F" & DernLigne)
  End With
  For Each cel In MaPlage ' pour toutes les cellules de la plage
    If cel.Offset(, -5) = 2 Then
      cel.Formula = "=ROUND(" & cel.Value & ",2)"
    End If
  Next cel
  Application.Calculation = -4105
End Sub

Si c'est ça, tant mieux ! sinon, ça doit être quelque chose d'approchant.

Cordialement

Salut,

Et si tu fait simplement le format de la cellule en nombre avec deux chiffres après la virgule? par exemple via vba sur la cellule D4 fait avec l'enregistreur de macro:

Range("D4").Select
Selection.NumberFormat = "0.00"

ne pas oublier de faire un else à ton If cel.Offset(, -5) = "2" et de mettre le format que tu veux quand ce n'est pas en format 0.00 car si cela vaut 2 à un moment le format va passer en "0.00" puis si cela ne vaut plus 2 et bin tu auras toujours le même format normalement et ce n'est pas ce que tu veux je pense ^^

sinon après pour écrire dans une cellule une formule, via l'enregistreur pour faire une somme il faut plutot declarer comme ci-dessous:

Range("D4").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[1]+RC[2])"

à la place de ton cel.value = formula si cela ne fonctionne pas, je n'ai pas testé moi même ^^

Edit: Dhany a fait une réponse plus rapide et a fourni un code

ECG

Merci à tous pour vos réponses

Même en faisant les conversions en 0.00 lorsque que je fais la somme des montants pour voir si je tombe sur 0.00, je trouve 0.00000000005145106 ....

Impossible d'avoir une somme avec 2 chiffres après la virgule malgré des essais de conversion dans tout les sens ...

Si quelqu'un connais une solution pour remédier à ce problème.

Merci beaucoup.

Peux-tu joindre ton fichier (sans données confidentielles) ?

Il n'y a que la formule =arrondi somme qui me permet d'avoir un montant total de 0,00.

Alors que ma liste de chiffre contient que 2 chiffres après la virgule.

Si vous arrivez à trouver une explication, je suis preneur

21test.xlsx (12.08 Ko)

Je viens de voir ton fichier, et je t'en retourne 3 autres ci-dessous.


Fichier Test 1

Formule en D1 : =SI(A1<>B1;"x";"")

Cette formule affiche un x si A1 est différent de B1, et n'affiche rien si A1 est exactement égal à B1 ;

or la colonne D est vide alors que j'ai déjà recopié cette formule vers le bas jusqu'en D176 ;

conclusion : tous les nombres des colonnes A et B sont bien identiques deux à deux.

Alors d'où vient la différence que tu as constatée ? surtout qu'en B180, j'ai mis cette formule :

=SOMME(B1:B176) ➯ 0,000000000021827872842550300000 ; et en B181, la formule

=A178-B180 ➯ 0,00 confirme que les 2 sommes non arrondies de chaque colonne A et B

sont bien les mêmes ; la seule explication que j'ai est celle-ci :

En décimal (base 10 car 10 chiffres de 0 à 9), 1/7 = 0,142857142857142857142857142857... et la série de chiffres 142857 se poursuit à l'infini ; or la précision des calculatrices ou des PC n'est pas infinie : la capacité d'un registre du coprocesseur arithmétique (spécialisé en calculs) est limitée, et c'est encore plus vrai pour la capacité d'un registre général du microprocesseur (cela quelle que soit la marque : Intel, AMD ou autre) ; si tu as du temps devant toi, tu peux lire la théorie du grand philosophe Blaise Pascal sur « L'infiniment grand et l'infiniment petit »... à moins que tu préfères lire ce document pdf :

http://www-pequan.lip6.fr/~vmm/expose.pdf

N'oublie pas qu'en informatique, tout finit par revenir à une représentation binaire : avec seulement des 0 et des 1.

En binaire (base 2 car 2 chiffres 0 et 1), la représentation binaire du nombre décimal 1/7 ne peut pas être exacte, et compte tenu de tout ce que j'ai écrit ci-dessus, c'est sûrement cela qui explique le problème que tu as rencontré... même s'il est vrai aussi que ça peut surprendre quand on sait qu'Excel fait ses calculs avec une précision maximale de 15 chiffres ; d'ailleurs, c'est sûrement dû aussi à une importante différence entre le nombre le plus petit et le nombre le plus grand : même prises en valeur absolue (donc que des nombres positifs), l'ordre de grandeur des nombres est trop différent.


Fichier Test 2

J'ai mis un format de nombre à 2 chiffres après la virgule pour tous les nombres ; en A178 et B178 : 0,00 : les 2 sommes sont égales ; pourtant, il y a FAUX en B180 alors que la formule est celle-ci : =A178=B178 ; ça signifie que les 2 sommes 0,00 ne sont pas les mêmes ; pourquoi ? à cause de la précision interne des calculs.


Fichier Test 3

Le fichier Test 3 est le même que le fichier Test 2, et pourtant, il y a VRAI en B180 ; cette fois, les 2 sommes 0,00 sont bien exactement les mêmes ; c'est pa'c'que j'ai mis sur l'processeur de ton PC un enchantement qui fait qu'il peut contenir des nombres avec une précision infinie : ça y'est ! l'impossible est devenu réalité !!! nan, je blague, bien sûr ! c'est grâce à une option d'Excel : onglet Fichier, bouton « Options Excel », choisir « Options avancées » ; fais défiler tout en bas, puis regarde un peu plus haut la rubrique « Lors du calcul de ce classeur : » ; dessous, il faut cocher la 2ème case : ☑ Définir le calcul avec la précision au format affiché ; or comme j'ai mis un format avec 2 chiffres après la virgule, les nombres affichés sont sur 2 chiffres après la virgule, et les calculs utilisent désormais cette précision.

NB : c'est normal si tu as eu ce message : « La précision pour ces données sera définitivement perdue. » ; c'est juste un message d'avertissement préventif : tu peux cliquer sur OK pour confirmer, ou appuyer sur la touche Echap pour annuler ; attention : de retour sur la fenêtre précédente des options avancées, tu dois faire la même chose pour confirmer ta décision : clic sur OK ou appui sur Echap ; naturellement, B180 affichera VRAI seulement si tu as confirmé.


Merci de me donner ton avis.

Cordialement

18test-3.xlsx (12.11 Ko)
7test-2.xlsx (12.06 Ko)
12test-1.xlsx (13.58 Ko)

Voila pourquoi il faut tout les tenant et aboutissants, tu veux les aditionner, je n'avais pensé que juste le format ne changeait pas les nombre eux même ^^

Pour compléter la réponse ci-dessus j'ai fais des test rapidos par macros :

Sub ARRONDI()
'tu mets ton chiffres en cellules A1 pour le test et tu lances

Cells(2, 1).Value = Round(Cells(1, 1).Value, 2) 'par formule = ARRONDI() je pense
Cells(3, 1).Value = WorksheetFunction.RoundUp(Cells(1, 1).Value, 2) 'par formule =ARRONDI.INF()
Cells(4, 1).Value = WorksheetFunction.RoundDown(Cells(1, 1).Value, 2) ''par formule =ARRONDI.SUP()
'Après tu peux simplement jouer avec excel et faire des choses du genre:
Cells(5, 1).Value = Int(Cells(1, 1).Value * 100) / 100

'tu peux voir qu'avec la roundup si tu mets 0,0000036547, ca va arrondir à 0.01 donc ta somme ne sera pas nul, choisis bien ce que tu veux comptabiliser ou pas
'fait des tests pour verifier que ca fait bien ce que tu veux et prends la meilleur formule
End Sub

Merci pour toutes ces précisions.

Très instructif en tout cas.

Bonsoir jeremy,

Merci d'avoir passé le sujet en résolu, mais si tu as bien lu mon message d'hier à 14:36,

je suis très étonné que tu n'aies téléchargé aucun des 3 fichiers joints : à cet instant,

tous indiquent : « Pas encore téléchargé ».

Serait-ce que mes explications étaient si claires et limpides que tu n'as pas eu besoin

de télécharger un seul fichier sur les 3 proposés ? si oui, j'en suis honoré !

(si tu changes d'avis et que tu les télécharges tous les 3, ça me fera plaisir aussi !)

Cordialement, dhany

Rechercher des sujets similaires à "inserer formule arrondi"