[VBA] : Problème comparaison

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 ?
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   Statut Membre Dernière intervention   295
 
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
JohnnyBed
 
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   Statut Membre Dernière intervention   295
 
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
JohnnyBed
 
C'est bon ca marche à merveille, merci beaucoup !
0