[VBA] : Problème comparaison

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

  1. 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?
    1. 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.
      1. 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