Je reviens encore avec un énième problème. Qui je pense, est récurent pour beaucoup de comptables et créateur de fichiers de facturation.
J'ai un tableur Excel de facturation.
J'effectue des calculs de quantités par des formules, saisie ou calculs (par exemple: A12*A40/A50*1.33).
Dans mon exemple ci dessous j'ai essayé de mettre en avant les différentes variantes pour un même résultat.
n°1 : les quantités sont calculées avec des formules ou calcul entre cellules.
n°2 : les valeurs sont arrondies à 2 chiffres après la virgules dans mes factures.
n°3 : lors d'un contrôle de compta (avec une calculette) les résultats sont différents. pour ce cas 12 centimes d'écart.
Comment faire ? par macro ? je pense avoir tout essayé sans résultat.
sachant que je veux utiliser des formules qui varient pour la saisie des quantités.
Non, on peut empêcher les références circulaires par macros. Mais ça ne résoudra pas toutes les difficultés quand on arrondit des chiffres à 4 chiffres après la virgule à 2 chiffres après la virgule (lors de la multiplication par un coeff).
Voir le fichier joint. Saisir des valeurs dans la plage b3:c12. On arrondit les valeurs saisies à deux chiffres après la virgule.
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
On Error GoTo FIN
If Not Intersect(Range("b3:c12"), Target) Is Nothing Then
Application.EnableEvents = False
For Each x In Intersect(Range("b3:c12"), Target).Cells
If IsNumeric(x.Value) Then x.Value = Round(x.Value, 2)...
Excel, la calculatrice de Windows et ma calculette (made in China) donnent les mêmes résultats (encore faudrait-il que les opérandes soient les mêmes !).
En B4 et B5, vous avez 12,7556 et en B10 vous avez 12,76.
En C4 et C5, vous avez 1,236 et en C10 vous avez 1,24.
nota : un format de cellule ne change pas la valeur contenue dans la cellule uniquement sa visualisation.
Excel, la calculatrice de Windows et ma calculette (made in China) donnent les mêmes résultats (encore faudrait-il que les opérandes soient les mêmes !).
En B4 et B5, vous avez 12,7556 et en B10 vous avez 12,76.
En C4 et C5, vous avez 1,236 et en C10 vous avez 1,24.
nota : un format de cellule ne change pas la valeur contenue dans la cellule uniquement sa visualisation.
Bonsoir mapomme , toujours actif sur le forum et merci....
Lors des calculs avec Excel nous pouvons avoir des résultats par exemple avec 10 chiffres après la virgule.
Nous travaillons habituellement sur l'affichage mais excel garde les chiffres réels.
Mais sur une facture nous devons arrêter aux centimes soit deux chiffres.
Et si il y a un contrôle extérieur, il se fait avec une calculatrice.
Ces problèmes de centimes n'apparaissent pas systématiquement mais peux être 15% du temps.
Aurais-tu une macro qui fige le résultat ou la saisie d'une cellule à deux chiffres Après la virgule Même si tu saisis une formule qui a un résultat 4 chiffres après la virgules.
Par exemple si j'écris dans une cellule 12.7556
ou une formule donne le résultat de 12.7556
la valeur dans cette cellule s'effectue seulement avec le chiffre arrondi à 2 chiffres après la virgule.
et inscrit 12.76 et utilise seulement ce chiffre pour les autres calculs.
Selon moi, c'est un peu plus compliqué que ça en a l'air.
Tout d'abord les saisies : c'est l'utilisateur qui doit rentrer les valeurs. Dans le commerce, il y a des prix unitaires qui vont quelquefois au-delà du deuxième chiffre après la virgule. Une macro ne peut pas savoir si une valeur rentrée avec 3 chiffres après la virgule est légitime ou non.
Ensuite les calculs : On peut inclure les formules de calcul dans un ARRONDI(Formule;2) pour arrondir à deux chiffres après la virgule.
Attention toutefois ! L'arrondi d'une somme de termes est rarement égal à la somme des arrondis de chaque terme !
nota : si vous avez des termes à deux chiffres après la virgule et que vous les multipliez par un coefficient à deux chiffres après la virgules, vous obtenez des termes à 4 chiffres après la virgule. Arrondir à deux chiffres après la virgule fait forcément perdre de la précision. Il faut donc faire attention au moment où vous arrondissez : les termes de départ, les termes intermédiaires, les sommes finales, etc. Qui bénéficie des arrondis : le client ou le vendeur ?
je saisie une formule ou une valeur dans une cellule.
Quand je change de cellule ou fait enter.
cela copie la valeur de cette cellule et la colle en ne prenant que 2 chiffres après la virgule.
j'ai peur que cella face une référence circulaire.
Non, on peut empêcher les références circulaires par macros. Mais ça ne résoudra pas toutes les difficultés quand on arrondit des chiffres à 4 chiffres après la virgule à 2 chiffres après la virgule (lors de la multiplication par un coeff).
Voir le fichier joint. Saisir des valeurs dans la plage b3:c12. On arrondit les valeurs saisies à deux chiffres après la virgule.
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
On Error GoTo FIN
If Not Intersect(Range("b3:c12"), Target) Is Nothing Then
Application.EnableEvents = False
For Each x In Intersect(Range("b3:c12"), Target).Cells
If IsNumeric(x.Value) Then x.Value = Round(x.Value, 2)
Next x
End If
FIN:
Application.EnableEvents = True
End Sub
Non, on peut empêcher les références circulaires par macros. Mais ça ne résoudra pas toutes les difficultés quand on arrondit des chiffres à 4 chiffres après la virgule à 2 chiffres après la virgule (lors de la multiplication par un coeff).
Voir le fichier joint. Saisir des valeurs dans la plage b3:c12. On arrondit les valeurs saisies à deux chiffres après la virgule.
Le code est dans le module de la feuille "Feuil1" :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim x
On Error GoTo FIN
If Not Intersect(Range("b3:c12"), Target) Is Nothing Then
Application.EnableEvents = False
For Each x In Intersect(Range("b3:c12"), Target).Cells
If IsNumeric(x.Value) Then x.Value = Round(x.Value, 2)
Next x
End If
FIN:
Application.EnableEvents = True
End Sub