[VBA] : Problème comparaison
JohnnyBed
-
JohnnyBed -
JohnnyBed -
Bonjour,
Je ne comprends pas pourquoi le dernier test ne renvoie pas true.
Les deux premiers renvoient "true" et le dernier renvoie "false".
Pourtant AnneeCmin = 20, AnneeCmax = 20, Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value = 20
Quelqu'un a une idée ?
Je ne comprends pas pourquoi le dernier test ne renvoie pas true.
Les deux premiers renvoient "true" et le dernier renvoie "false".
Pourtant AnneeCmin = 20, AnneeCmax = 20, Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value = 20
Quelqu'un a une idée ?
If 20 >= AnneeCmin And 20 <= AnneeCmax Then
bool = True
Else
bool = False
End If
Ligne = 2
If Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value >= 20 And Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value <= 20 Then
bool = True
Else
bool = False
End If
If Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value >= AnneeCmin And Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value <= AnneeCmax Then
bool = True
Else
bool = False
End If
4 réponses
-
Bonjour,
Une remarque tout d'abord...
ça ...If Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value >= 20 And Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY).Value <= 20 Then
c'est un non sens!!!
tu ne le "vois" peut-être pas écrit de cet manière mais tu as écris,
Si a>= 20 et si a<=20 alors ....
en fait je pense que tu veux :
- 1 - soit que a est une valeur ( n'importe quelle valeur)
- 2 - Soit que a est seulement la valeur de 20.
Question : que veux-tu tester sur cette cellule? -
En fait je test si la valeur de la cellule "Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY)" est bien comprise entre mon AnneeMin et mon AnneeMax. J'ai mis 20 parceque j'ai un cas ou l'anneMin = 20, l'anneMax =20 et la celllule "Workbooks("FICHE").Sheets("DETAIL").Cells(Ligne, ColonneMY)." = 20 et ca devrait passer.
PS :Je sais que c'est un non sens de dire que 20<=20<=20, mais mathématiquement c'est vrai. -
d'abord je te prie de m'excuser je n'avais pas compris à cause du '20'
pour ton problème j'ai fait le test suivant avec Thisworkbook et une variable
temporaire.... résultat : true!
donc fait ce test en ajoutant seulement la variable temporaire.
Sub test()
ColonneMY = 2
AnneeCmin = 20
AnneeCmax = 20
If 20 >= AnneeCmin And 20 <= AnneeCmax Then
bool = True
Else
bool = False
End If
Ligne = 2
vartemp = ThisWorkbook.Sheets("DETAIL").Cells(Ligne, ColonneMY).Value
If vartemp >= AnneeCmin And vartemp <= 20 Then
bool = True
Else
bool = False
End If
end sub -