[VBA] : Problème comparaison

Fermé
JohnnyBed - 17 nov. 2010 à 10:10
 JohnnyBed - 17 nov. 2010 à 16:28
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 ?
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

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
17 nov. 2010 à 11:28
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?
0
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.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
17 nov. 2010 à 12:01
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
0
C'est bon ca marche à merveille, merci beaucoup !
0