Résolu VBA Condition "if" respectée mais le code dans la boucle n'est pas exécuté

Philou250

Habitué
Bonjour à tous,

Je suis en train de réaliser un petit programme en VBA, dans celui-ci j'ai un module qui me sert à mettre toutes les valeurs des cellules de couleurs bleus dans une listbox.
Voci une partie du code (certaines déclarations de variable ne sont pas affichées dans cette partie) :

Code:
Dim rangeA5 as range
Set RangeA5 = wsTransfert.Range("A5")
For z = 1 To 137 '137 cellules dans la plage que je souhaite "analyser"
    If RangeA5.Offset(0, z - 1).Interior.ThemeColor = xlThemeColorLight2 And RangeA5.Offset(0, z - 1).Interior.TintAndShade = 0.599993896298105 Then  'Condition qui "bug", en gros cette ligne signifie, si la rangeA5 est de couleur bleu "Then ..."
        UserForm1.ListBox5.AddItem (RangeA5.Offset(0, z - 1).Value)
    ElseIf RangeA5.Offset(0, z - 1).Value = "" Then
    Else
        UserForm1.ListBox6.AddItem (RangeA5.Offset(0, z - 1).Value)
    End If
Next

J'ai reperé qu'il me mettait toutes mes cellules dans la listbox6 alors que j'avais des cellules de couleurs bleus, j'ai testé mon programme avec le mode F8, et j'ai regardé les valeurs de :
Code:
RangeA5.Offset(0, z - 1).Interior.ThemeColor = xlThemeColorLight2
et de
Code:
RangeA5.Offset(0, z - 1).Interior.TintAndShade = 0.599993896298105
lorsqu'une cellule est de couleurs bleus, elle respecte bien les conditions (j'ai vérifié le code 0.599993896298105 par exemple) et pourtant le code en dessous n'est pas exécuté.
Quelqu'un à une idée pourquoi ?

Merci

Philou250
 

drul

Obscur pro du hardware
Staff
Meilleure réponse
Utilise une "fenêtre" du genre > 0.59 AND < 0.6 ...

Comparer avec la 42ème décimale d'un nombre réel est toujours très difficile et instable ...
 

drul

Obscur pro du hardware
Staff
De manière géné rale les opérateurs = et <> sont à prohiber lors du travail avec des réels.
 

zeb

Modérateur
Eh, eh, eh !
Et pas que sur les réels, mon cher Drul.

Combien font 1000000000000000000000000000000000000000000000000 + 1 - 1000000000000000000000000000000000000000000000000 ?

N'importe quelle personne sur ce forum peut répondre (enfin, j'espère).

Mais ne posez pas la question à un ordinateur, sans prendre de précaution !

-------------------------------------------------------------------------

VB (VBA/Excel) GCC (AIX 4.2.0) m'ont répondu 0.
Les cellules d'Excel sont trop petites : 0 aussi.

Je m'attendais à la même réponse avec ksh, en me disant que de toutes façons bc ferait mieux.
Et bien non, ksh (et bash aussi) savent compter !
 

drul

Obscur pro du hardware
Staff
C'est pas exactement le même problème, mais effectivement jouer avec les limites d'une variable quelque soit son type est casse gueule, j'ai récement fait planter une machine à cause d'un stupide
Code:
-(-2147483648)
...
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 070
Membres
1 586 394
Dernier membre
Manoushk
Partager cette page
Haut