Rechercher : dans
Par :

[VBA] Boucle While

Dernière réponse le 1 aoû 2007 à 15:28:28 modjibe, le 31 jui 2007 à 15:29:43 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [VBA] Boucle While » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
Structures conditionnelles du langage Pascal VoirLes structures de boucle Notre exemple avance. Maintenant, si nous désirons construire une phrase non plus avec trois mots, mais avec cinq, nous n'allons tout de même pas répéter notre code cinq fois !!! Pour cela, il suffit d'utiliser une des...
Langage C++ - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle ? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non. Ces structures conditionnelles peuvent être associées à des structures qui se répètent...

1

Lupin.A, le 31 jui 2007 à 22:23:05

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

Répondre à Lupin.A

2

modjibe, le 1 aoû 2007 à 12:16:46

Bon ben je vais parenthéser à mort alors :)

Répondre à modjibe

3

modjibe, le 1 aoû 2007 à 12:35:32
  • +1

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 ...

Répondre à modjibe

4

 Lupin.A, le 1 aoû 2007 à 15:28:28

Re:

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

Lupin

Répondre à Lupin.A