[VBA] Problème de boucle

modjibe Messages postés 45 Statut Membre -  
 Tunisien -
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

  1. Tunisien
     
    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....
    0
    1. modjibe Messages postés 45 Statut Membre 3
       
      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
      0
  2. modjibe Messages postés 45 Statut Membre 3
     
    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.
    0
  3. modjibe Messages postés 45 Statut Membre 3
     
    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
    0
  4. Tunisien
     
    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
    0