Microsoft 365 VBA - Boucle while interminable !

Fabinou62

XLDnaute Occasionnel
Bonjour à tous,

Tout est dit dans le titre, alors je sais vous allez dire : regarde ta condition mais c'est ca le problème je ne sais pas :(
Le End While ne fonctionne pas (erreur), je l'ai remplacé par Wend. Voici mon code :

VB:
While vtrouvé <> 1 Or indextab2 <> (nbrecolonneTCD + 9)
 
                    If Cells(2, indextab2).Value = ville(0) Then
                        commune(0) = ville(0)
                        vtrouvé = 1
                        MsgBox ("Trouvé")
                        
                    Else
                        indextab2 = indextab2 + 1
                    End If
                    
                Wend

Indextab2, une variable qui s'incrément avec For,
commune et ville sont obtenu par la fonction Split

L'objectif est de comparer 2 villes et si elles sont égaux, la valeur est stockée dans commune.

Merci d'avance
 
Solution
Bonjour,
Si Vtrouvé <> 1 Or indextab2 <> (nbrecolonneTCD + 9)
Alors là boucle est infini car l'expression
Indextab2 <> (nbrecolonneTCD + 9) n'est pas forcément rempli il faut utiliser une expression de sortie qui utilise un And et non un Or!
VB:
Do While indextab2 <> (nbrecolonneTCD + 9)
 
                    If Cells(2, indextab2).Value = ville(0) Then
                        commune(0) = ville(0)
                        MsgBox ("Trouvé")
                        Exit Do
                        
                    Else
                        indextab2 = indextab2 + 1
                    End If
                    
 Loop

fanch55

XLDnaute Barbatruc
Salut, comme il nous manque pas mal de données,
une petite sub interprétée :
VB:
Sub test()
Dim ville(1), commune(1)
    indextab = 2
    nbrecolonneTCD = 5 ' nombre de colonnes de la ligne à scruter
    ville(0) = "toulon"
    Set found = Cells(2, indextab).Resize(, 1 + nbrecolonneTCD - indextab).Find(ville(0))
    If found Is Nothing Then
        MsgBox ville(0) & " non trouvée"
    Else
        commune(0) = ville(0)
        MsgBox ville(0) & " en " & found.Address & vbLf & "commune=" & commune(0)
    End If

End Sub
1596200891708.png
 

dysorthographie

XLDnaute Accro
Bonjour,
Si Vtrouvé <> 1 Or indextab2 <> (nbrecolonneTCD + 9)
Alors là boucle est infini car l'expression
Indextab2 <> (nbrecolonneTCD + 9) n'est pas forcément rempli il faut utiliser une expression de sortie qui utilise un And et non un Or!
VB:
Do While indextab2 <> (nbrecolonneTCD + 9)
 
                    If Cells(2, indextab2).Value = ville(0) Then
                        commune(0) = ville(0)
                        MsgBox ("Trouvé")
                        Exit Do
                        
                    Else
                        indextab2 = indextab2 + 1
                    End If
                    
 Loop
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 937
Membres
101 844
dernier inscrit
pktla