Prb d'arrondi lors de l'enregistrement de la feuille

Bonjour le forum,

Je fais appel à vos compétences afin d'essayer de dénouer un problème sur le classeur ci-joint.

Le principe de celui-ci est de rentre toutes les recettes du mois en cours afin de préparer les facturations de fin de mois. Une fois la feuille "facturation" remplie, on enregistre celle-ci afin d'en garder une trace.

Mais lors de l'enregistrement, un arrondi des résultats, par exemple 0.196 € devient 0.2 €, se produit ce qui fausse totalement les recettes à facturer...

Merci encore à Xorsunkukai pour l'aide précieuse qu'il a su m'apporter durant la construction de ce classeur.

Merci par avance de votre support et pour toutes aides éventuelles apportées.

Cordialement,

Yannick

Bonjour

Ce n'est pas un pb, si tu passes a deux décimales l'affichage s'arrondi soit au centime supérieur soit inférieur mais la valeur à 5 décimales est conservée.

Si tu veux rester sur deux décimales utilise la fonction arrondi( formule;2)

Cordialement

FINDRH

Bonjour à tous,

@FINDRH : cette demande fait suite à ce sujet: https://forum.excel-pratique.com/excel/kpi-et-extraction-de-donnees-d-autres-feuilles-pas-forcement-...

Les cellules sont bien formatées à 5 décimales, mais excel arrondi tout de même à la seconde décimale(exemple : 0,16597 € devient 0,17000 €).

Je pensais avoir trouvé la parade en rajoutant un ' devant la valeur mais bien que fonctionnel chez moi (https://forum.excel-pratique.com/s/goto/1110918), ce n'est pas le cas chez yannickb19,

Je dois louper quelque chose....

Cordialement,

Bonjour à tous,

le pb ce n'est pas l'enregistrement, c'est le format monétaire sur la feuille.
La lecture du tableau le converti en Currency.

image

Currency est un entier à virgule fixe à 4 décimales et tu en as 5, il arrondi

Si j'applique un format standard sur la feuille =>

image

Si tu veux tester :

Sub test()
    Dim a As Double, b As Currency
    a = 0.16597
    b = a
    Debug.Print b ' => 0.166
End Sub

Currency n'est pas adapté à tes prix, si tu dois ajouter un $ fais-le avec un format personnalisé Standard" $"
Mais au prix de pb d'arrondis dûs à ce format flottant IEEE 754...
Que tu pourras estomper en arrondissant tes calculs à 5 décimales
Délicat mais tu n'as guère le choix
eric

PS : qq chose me gène dans la proc créer :

       On Error Resume Next
       .Range("C8").Resize(k, 10).Value = newtb

le On Error Goto 0 n'a pas été mis après la ligne dont on veut traiter l'erreur et peut donc se déclencher n'importe où plus loin en masquant une autre erreur

Bonjour Eriiic,

merci pour cet éclairage qui permet, en passant la feuille "facturation" en format standard, de solutionner le problème d'arrondi, certe je n'ai plus le symbole monétaire mais les résultats sont juste et c'est le plus important. (Au temps pour moi, je n'avais pas vu votre conseil de passer en Standard" $" pour garder le symbole... j'étais trop préocupé par le fait d'avoir des résultats sans arrondi)

En ce qui concerne "On Error Goto 0", j'en appel à #Xorsankukai qui a construit ce code. Qu'en pensez-vous ? il y a t-il une modification à faire, comme le souligne Eriiic, pour éviter de masquer d'autres erreurs?

Bien cordialement à vous deux,

Yannick

Bonjour à tous,

@eriiic : merci pour ces précisions et pour tes conseils avisés,

yannickb19:

il y a t-il une modification à faire, comme le souligne Eriiic, pour éviter de masquer d'autres erreurs?

eriiic : le On Error Goto 0 n'a pas été mis après la ligne dont on veut traiter l'erreur

donc

On Error Resume Next
 .Range("C8").Resize(k, 13).Value = newtb
  'on écrit les données de newtb à partir de C8
On Error GoTo 0

Après réflexion, je ne vois plus l’intérêt de passer par une variable "tablo", puisqu'on effectue un tri sur la feuille "facturation" avant de créer le nouvel onglet...il n'y aura donc pas de lignes vides entres les données....

Private Sub Créer_Click()
 mois = Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
 'tableau mois contenant les 12 mois de l'année)
  couleur = Array(65535, 49407, 255, 192, 15773696, 12611584, 10498160, 5287936, 9359529, 6968388, 14998742, 46)
 'tableau couleur contenant les codes couleurs

  If Me.ComboBox1.Value = "" Then MsgBox "Veuillez selectionner un mois !": Exit Sub
  'si le combobox1 est vide: message + sortie de la procédure
  If existSheet(Me.ComboBox1.Value) Then MsgBox "Cet onglet existe déjà!": Unload Me: Exit Sub
  'si l'onglet existe déjà: message + fermeture USF + sortie de la procédure
  'on utilise la fonction créée dans le module 1

  Application.ScreenUpdating = False ' désactive le rafraichissement de l'écran

  With Sheets("facturation")
  'agit sur cette feuille
   .Range("C7").CurrentRegion.Sort key1:=.Range("G7"), order1:=xlAscending, dataoption1:=xlSortNormal, _
                       key2:=.Range("C7"), order2:=xlAscending, dataoption2:=xlSortNormal, Header:=xlYes
  'filtre par odre croissant colonne G puis C
   .Copy after:=Sheets(Sheets.Count)
   'copie la feuille factiration en dernière position
   End With

   With ActiveSheet
  'sur cette copie
    .Activate
    'on active la feuille
    .Range("C8:L77").Value = .Range("C8:L77").Value: .Range("C4") = Me.ComboBox1.Value
    'on remplace les formules par leurs valeurs : on écrit le nom de la feuille en C4
    .Range("N8:O77").Value = .Range("N8:O77").Value
    'on remplace les formules par leurs valeurs
    .DrawingObjects.Delete: .Range("C8:D77").Validation.Delete
    'on supprime les boutons et les listes déroulantes
    .Name = Me.ComboBox1.Value
     'on renomme la feuille
      For i = 0 To UBound(mois, 1)
      'boucle sur les valeurs du  tableau mois
       If .Name Like mois(i) Then .Tab.Color = couleur(i)
       'si le nom de la feuille correspond au mois,on récupère la couleur correspond à l'indice dans le tableau couleur
       'exemple, Janvier==> i= 1, couleur 65535; février==> i=2, couleur=49407, etc...
      Next i
      'prochaine valeur
   End With
  Unload Me
  'ferme USF
End Sub

Bonne continuation,

Bonjour le forum,

Bonjour Xorsankukai, bonjour Eriiic,

J'ai fait toutes les modifications préconisées et tout semble fonctionner à merveille

Je vous remercie pour votre aide et soutien technique.

Bien cordialement,

Yannick

Rechercher des sujets similaires à "prb arrondi lors enregistrement feuille"