[VBA] Boucle While

modjibe Messages postés 45 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

Je ne comprends pas pourquoi ma boucle plante.

Voilà la condition :

Do While a > b And Left(cellExcel.Value, 5) <> "Total"

Au niveau logique le And me choque mais ca ne marche pas avec un Or (les conditions ne peuvent pas être vraies en même temps....).

Cette boucle parcourt les lignes d'un tableau à la recherche de "Total". En passant dessus ça ne s'arrête pas et ça plante puisque à l'intérieur de ma boucle je traite la valeur cellExcel.Value en partant du principe que c'est un entier. Alors voilà ...

Y'a -t-il des choses à savoir ? J'ai essayé en séparant mes blocs par des parenthèses etc mais ça ne marche pas. C'est mon dernier bug avant que mon petit programme soit exploitable...
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    chez moi, de cette façon, le [And] et le [Or] fonctionne !

    Option Explicit
    
    Sub Test()
    
        Dim cellExcel As Range
        Dim a As Long, b As Long
    
        Set cellExcel = Range("A1")
    
        a = 10: b = 5
        While ((a > b) Or (Left(cellExcel.Value, 5) <> "Total"))
            '...
            DoEvents
            a = (a - 1)
            ActiveCell.Offset(1, 0).Select
            Set cellExcel = ActiveCell
        Wend
        
        Set cellExcel = Nothing
        
    End Sub
    '
    
    Sub Test2()
    
        Dim cellExcel As Range
        Dim a As Long, b As Long
    
        Range("A1").Select
        Set cellExcel = ActiveCell
    
        a = 7: b = 5
        While ((a > b) And (Left(cellExcel.Value, 5) <> "Total"))
            '...
            DoEvents
            a = (a - 1)
            ActiveCell.Offset(1, 0).Select
            Set cellExcel = ActiveCell
        Wend
        
        Set cellExcel = Nothing
        
    End Sub
    '
    

    Lupin
    3
    1. modjibe Messages postés 45 Statut Membre 3
       
      Bon ben je vais parenthéser à mort alors :)
      0
  2. modjibe Messages postés 45 Statut Membre 3
     
    Chez moi ça ne marche pas, il me fait une boucle alors que :

    a = 612
    b = 611
    Left(cellExcel.Value,5) = "Total"

    Je comprends pas ...
    0
  3. Utilisateur anonyme
     
    re:

    As-tu utilisé la version [ And ] ou la version [ Or ] ( Test ou Test2 ) ?

    Lupin
    0