Problème de décimale

Bonsoir,

J'ai une formule countifs qui est sensé me donner le nombre 4, or j'ai un problème avec la 3e ligne :

B = Application.CountIfs(Sheets("Matrice").Range("C" & DBT & ":C" & FIN), "=" & Range("B" & N).Value, _
Sheets("Matrice").Range("E" & DBT & ":E" & FIN), "<>" & Range("B" & N).Value, _
Sheets("Matrice").Range("D" & DBT & ":D" & FIN), "<=" & 1, _
Sheets("Matrice").Range("B" & DBT & ":B" & FIN), Range("A" & N).Value)
Sheets("Matrice").Range("D" & DBT & ":D" & FIN), "<=" & 1, _

Si je met "1" la formule fonctionne et me donne bien 4.

Mais j'ai besoin d'être plus précis et le chiffre devrait être en réalité : 0,999988425925926 (soit minuit - 1 seconde pour les puristes)

Si je remplace 1 par 0,999988425925926, la formule ne marche plus et m'affiche le résultat 0

Sheets("Matrice").Range("D" & DBT & ":D" & FIN), "<=" & 0,999988425925926,  _

Si je change un peu la formule et que je place le nb cherché entre les guillements, la formule marche à nouveau et je retrouve mon 4

Sheets("Matrice").Range("D" & DBT & ":D" & FIN), "<=0,999988425925926",  _

Vous allez me dire dans ce cas où est le problème si çà marche ? Et bien ce 0.9998... je souhaite le rendre variable et le remplacer par un objet range que je suis obligé de placer en dehors des guillements, ce qui me remet à nouveau un 0.

J'ai cherché sur la conversion de format Cdbl et çà ne fonctionne pas.

Je me demande si ce n'est pas le '.' des décimales qui rentre en conflit avec les "," de la formule.

Quand pensez-vous ?

Je vous remercie

Bonsoir Ginga999,

Et avec un Replace ? Quelque chose du genre :

Replace(taVariable, ".", ",")

As-tu essayé ?

Je suis en train de faire un mini fichier excel pour vous l'envoyer en PJ, je pense que ce sera plus simple.

Je dois faire une étourderie, même la recherche du "1" ne marche plus....

Je vous envoie une PJ

L'objectif en PJ serait d'avoir

a = 1

b = 1

c = 1

d = 1

16classeur2.xlsm (17.16 Ko)

Je ne comprends pas,..

Il semblerait que les situations c et d fonctionnent si je met

dans le cas c : le nombre entre guillemets

dans le cas d : un format ( .... , "0")

Alors que c'est un nombre qui figure en colonne 5

Je pensais y être arrivé mais çà ne fonctionne toujours pas.

Lorsque j'applique format(range(....).value, "0") çà fait passer mon 0.9999 à 1, c'est pour çà que le résultat semblait bon mais il la formule fait un arrondi.

Je vais continuer de chercher

Afin d'être plus précis j'ai légèrement modifié le programme pour détecter cette erreur dans laquelle je suis tombé

Pour que le calcul soit bon je dois trouver

a=2

b=1

c=1

d=1 (et surtout pas d=2)

18classeur2.xlsm (17.34 Ko)

Bonjour

As-tu essayer :

d = Application.CountIf(Sheets("Feuil1").Columns(5), "<=" & Range("G1"))

ça retourne bien 1

Amicalement

Nad

Bonjour Nad,

Tu es sûr de toi ? je viens d'essayer et çà me donne 0, ce qui me semble normal si on ne fait pas référence à la valeur de la cellule.

Par contre je viens de me rendre compte que :

d = Application.CountIf(Sheets("Feuil1").Columns(5), "<=" & Range("G1").Value)

ne marche même pas si range("G1").value = 0.9

Ce qui semble signifier clairement que je fais une erreur basique de comparaison entre décimaux.

Je continue de chercher, mais si vous avez l'explication je prend toujours ! merci !

Un problème de format qui retire peut-être la virgule de la column 5, je ne sais pas

Bonjour,

Essaie comme cela

Sub test()
Z = Format(Range("G1").Value, "0")
a = Application.CountIf(Sheets("Feuil1").Columns(5), "<=" & 1)
b = Application.CountIf(Sheets("Feuil1").Columns(5), "<=0.999988425925926")
c = Application.CountIf(Sheets("Feuil1").Columns(5), "<=" & "0.999988425925926")
d = Application.CountIf(Sheets("Feuil1").Columns(5), "<=" & Replace(Range("G1").Value, ",", "."))
MsgBox a & "/" & b & "/" & c & "/" & d
End Sub

A+

Re

capture
11test.xlsm (19.82 Ko)

Nad

Nad, je viens d'ouvrir ta PJ et le programme me renvoit 0 et non 1 même si je te crois quand tu me dis trouver 1.

Est-ce qu'il n'y a pas un paramètre d'excel ou dans les options vba qui empêcherait ma version de faire le calcul ? (je suis sur 2012 depuis peu est-ce qu'il y aurait un paramètre ?)

Disons que ta solution me plaît encore plus que celle de fnragy et vba-new puisque celà allège ma formule.

çà marche... merci frangy

et merci vba-new .... qui m'avait en effet dit de faire çà, que je n'ai pas écouté comme à mon habitude parce que çà ne me semblait pas possible !

En effet, la virgule des décimales semble donc poser problème dans les formules, je trouve çà étonnant, ou alors il faut que je mette la division dans une variable du programme.

Merci à vous deux, et excuse-moi vba-new, il m'arrive encore trop souvent d'avoir la tête dure et de ne pas écouter.

Je vous souhaites de Bonne fêtes de Pâques et bcp de chocolat !

Encore Merci


Je suis en train de chercher s'il n'y pas un problème dans les paramètres régionaux du '.' et de la ','


Bon pour moi c'est correct, je pense que ce qu'il y a de mieux à faire c'est de mettre la division directement dans le programme pour ne pas avoir de conflit avec la virgule figurant dans la cellule.

Je vous remercie encore une fois tous !

01
Rechercher des sujets similaires à "probleme decimale"