Se connecter avec
S'enregistrer | Connectez-vous
Résolu

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

Dernière réponse : dans Programmation
Partagez

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) :

  1. Dim rangeA5 as range
  2. Set RangeA5 = wsTransfert.Range("A5")
  3. For z = 1 To 137 '137 cellules dans la plage que je souhaite "analyser"
  4. 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 ..."
  5. UserForm1.ListBox5.AddItem (RangeA5.Offset(0, z - 1).Value)
  6. ElseIf RangeA5.Offset(0, z - 1).Value = "" Then
  7. Else
  8. UserForm1.ListBox6.AddItem (RangeA5.Offset(0, z - 1).Value)
  9. End If
  10. 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 :
  1. RangeA5.Offset(0, z - 1).Interior.ThemeColor = xlThemeColorLight2

et de
  1. 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
  • Philou250 a édité ce message
  • Philou250 a édité ce message

Meilleure solution

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 ...
  • Philou250 a sélectionné cette solution comme la meilleure réponse

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 !

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
  1. -(-2147483648)
...
Posez votre question