[VBA] Problème de boucle

Bonjour,

While a > b Or Not (Left(cellExcel.Value, 5) = "Total")
        i = i + 1
        Set cellExcel = wsExcel.Range("A" & CStr(i))
            While cellExcel.Value = 0
                i = i + 1
                Set cellExcel = wsExcel.Range("A" & CStr(i))
            Wend
        a = CInt(Left(num, 4))
        b = CInt(Left(cellExcel.Value, 4))
        MsgBox ("a:" & a)
        MsgBox ("b:" & b)
Wend


La boucle ne s'arrête pas et pourtant après vérification il y'a bien un moment ou "a" est supérieur à "b"

Grmbl
Configuration: Windows XP
Internet Explorer 7.0

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. je ne comprends pas bien ce que cette boucle fait.... mais d'apres ce que tu viens de dire a la fin de ton message:"....et pourtant après vérification il y'a bien un moment ou "a" est supérieur à "b" "
    je vois que ta condition d'arret est que "a" devient superieur a "b"....c ca?
    si c le cas ,tu fais une erreur de raisonnement puisque si a>b la boucle va continuer a tourner puisque tu a ecris en haut "While a > b ..."

    reverifis ton raisonnement, peut etre tu doit changer ta condition par "While a < b "....

    si ce n'est pas le cas et tu veus plus d'aide explique nous un peu ce que la boucle fais....
    1. Ah mais oui ! aveugle que je suis...
      merci

      Et pour info c'est une boucle en gros qui me sert à parcourir les lignes d'une feuillle excel
  2. Non en fait mon raisonnement est bon a est plus grand au départ et devient plus petit que b et je veux qu'à ce moment là la boucle s'arrête. La fonction fait des trucs mais ça ne change rien.
    1. a priori ce serait la partie du code

      Or Not (Left(cellExcel.Value, 5) = "Total")


      Il faut mettre un And et pas un Or, je ne comprends pas pourquoi
      1. si tu met un And la boucle arrete de tourner dé que l'une des condition n'est pas satisfaite par contre si tu met Or les 2 conditions doivent etre fausses pour que la boucle s'arrete