Formule =IF acceptant la différence d'arrondis

Fermé
Cmathieu - 14 juil. 2016 à 19:40
 Utilisateur anonyme - 15 juil. 2016 à 14:22
Bonjour,

J'aimerais mettre une formule "IF" entre une case 1 et une case 2 avec message d'erreur si les 2 cases sont différentes. Le problème c'est que les données de ces cases peuvent recevoir des chiffres décimaux donc mes arrondis sont égaux au visuel (car seul les 2 chiffres après la virgule sont visible sur le doc) mais que mon message d'erreur affiche une différence alors quand réalité le visuel de mes 2 cases est identique.
Comment puis je faire pour que ma formule accepte une différence la différence de decimal.

Ps: J'ai pensé aussi de faire affiché un message d'erreur qd ma case 1 et ma case 2 ont une diff de plus de 0,1 mais ça me bloque aussi car ça sera que dans un sens . Et parfois c'est ma case 1 qui sera sup de 0,10 et parfois ça sera ma case 2.

Merci d'avance pour l'aide,

A voir également:

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 409
Modifié par Vaucluse le 14/07/2016 à 20:05
Bonjour
on ne voit pas très bien ce que vous voulez comparer?
est ce les entiers sans prendre en compte les décimales
est ce les arrondis à X décimales, sup, if ou au plus prés?
dans le premier cas, comparer les entiers:

=IF(INT(C1)=INT(C2);....;...)

pour les arrondis:
=IF(ROUND(C1;2)=ROUND(C2;2);...;...)
pour arrondi sup: ROUNDUP
pour les inférieurs ROUNDDOWN
avec le nombre de décimales à prendre en compte ici ;2)

et enfin pour admettre où non un écart entre les deux vakleurs, ce qui est peut être le mieux:

=SI(ABS(C1-C2)<x;/...;...)

qui prendra en compte la valeur absolu de l"écart qu'il soit positif ou négatif
xxx étant la valeur de l'écart que vous pouvez admettre (0,1 ou 0,001 ect..

crdlmnt


La qualité de la réponse dépend surtout de la clarté de la question, merci!
0
Merci pour la réponse.
Pour être plus précise : case 1 = 12,5356. Case 2=12,5399 . Vu que je cache mes chiffres deux nombres après la virgule . J'ai un visuel : case 1 = 12,53 et case 2= 12,53 donc le visuel des deux cases est identiques.
J'aimerais donc que ma formule IF prénne juste en considération 12,53 (mes deux nombres après la virgule). Et donc dans ce cas que la formule informe que mon résultat est correcte car case 1 et case 2 sont bien égales a 12,53.
J'espère que je suis plus claire :)
0
Utilisateur anonyme > Cmathieu
Modifié par albkan le 14/07/2016 à 20:53
 
Bonjour Cmathieu, Vaucluse a raison :

ROUND(12.5356,2) retourne 12.53
ROUND(12.5399,2) retourne 12.53 aussi

Donc la comparaison des deux valeurs sera exacte et IF() retournera TRUE.

Mais lis d'abord mon message #2 dont le lien te sera sûrement utile :
tu pourrais n'avoir à modifier aucune formule !  😊
 
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 409 > Utilisateur anonyme
Modifié par Vaucluse le 15/07/2016 à 06:59
Bonjour
ce n'est pas tout à fait selon vos exemples Albkan, car

___ ROUND(12.539,2) va retourner 12,54 (à partir de 12,536)
___ ROUND(12.531 va retourner 12,53

si on ne veut prendre en compte que la partie décimale visible plutôt que l'écart réel entre les deux valeurs il faut utiliser:
ROUNDDOWN(Cell;2) qui renverra toujours au 2 décimales inférieures (ou ROUNDUP pour avec les supérieures, ce qui revient au même)

Mais pour éliminer un écart de moins de 0,01 quel que soit l'entier, celle ci est suffisante

=IF(ABS(C1-C2)<0.01,"OK";"")

crdlmnt
0
Utilisateur anonyme > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
15 juil. 2016 à 14:22
 
Ce message est aussi pour Cmathieu.

Bonjour Vaucluse,

Ce que tu as écrit est tout à fait exact : j'ai oublié de faire l'arrondi
du 2ème chiffre après la virgule selon le 3ème ; ainsi, pour mes
deux exemples, au lieu de 12,53, j'aurais dû écrire 12,54 :

ROUND(12.5356,2) retourne 12.54
ROUND(12.5399,2) retourne 12.54 aussi

Et comme tu l'as indiqué :

ROUND(12.539,2) retourne 12.54
ROUND(12.531,2) retourne 12.53

----------------------------------------------------------

Je continue quand même à penser que ce serait beaucoup
plus simple pour Cmathieu d'utiliser dans son Excel anglais
l'équivalent français de ce paramètre :

Avec Excel 2007

bouton Office (= menu Fichier), Options Excel, onglet Options avancées,
faire défiler vers le bas jusqu'à voir cette rubrique (bande bleue) :
« Lors du calcul de ce classeur : »

☑ Définir le calcul avec la précision au format affiché

Avec Excel 2003

menu Outils / Options... ; onglet Calcul :
☑ Calcul avec la précision au format affiché

----------------------------------------------------------

Les calculs sont toujours faits avec la précision maximale de 15 chiffres
après la virgule, puis pour un format à 2 chiffres après la virgule, l'arrondi
est fait selon le 3ème, et le résultat est stocké en interne et affiché avec
seulement ces 2 chiffres après la virgule. Mais attention : le paramètre
ci-dessus s'applique au classeur entier (donc pour toutes les feuilles).

Si cet arrondi automatique n'est pas désiré pour une seule des feuilles,
il ne faut pas utiliser ce paramètre et utiliser les fonctions d'arrondi.

Cordialement.  😊
 
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 409
14 juil. 2016 à 20:42
Alors essayez avec

=IF(ABS(C1-C2)<0,01;"OK";"")

le "OK" parce que je sais pas ce que vous voulez ressortir.
crdlmnt
0
Bonjour Cmathieu,
Je crois que cette solution de Patrice33740 pourra t'aider.   😊
Mais il faudra trouver la correspondance dans ton Excel anglais.
 
0