VBA -Excel pb de boucle: Exit Sub

Résolu/Fermé
onra - 9 juil. 2008 à 19:09
 onra - 10 juil. 2008 à 10:13
Bonjour,

J'essaye de monter un code qui me permttent de lire des valeurs d'une base de données (sous excel) à travers des TextBox d'un UserForm.
Dans un 1er temps:
Le code va chercher dans la colonne 1 la valeur = à Nchrono
Si il trouve il copie dans le TextBox (Lot1), la valeur correspondante dans la cellule "C"&h.
Ensuite il teste dans la colonne 1 la valeur en dessous et si elle est toujours = à Nchrono alors il copie "C"&h+1 dans la TextBox (Lot2)
Si le dernier test n'est pas bon alors il sort du Sub
Si il est bon, il sort du SUb

(Il y a 2 sorties, car je ne vous donne qu'un extrait, normalement il y a 10 TextBox par ligne sur 8 lignes)
Le problème est que la première sortie ne marche pas , et donc il copie quoi qu'annonce la cellule (h+1,1)

Voici le bout de code que j'ai monter. Je me rend bien compte qu'il est très lourd, mais j'ai pas trouver mieux...
Private Sub reactualiser_Click()
Dim Cell As Range
Dim h As Integer
Workbooks("Bdd").Worksheets("Bdd").Activate
For h = 1 To 1000
If Val(Cells(h, 1)) = Val(Nchrono) Then
Lot1.ControlSource = "C" & h
If Not (Val(Cells(h + 1, 1)) = Val(Nchrono)) Then
Exit Sub
End If
Dim h2 As Integer
h2 = h + 1
Lot2.ControlSource = "C" & h2
Exit Sub
End If
Next h
End Sub


Merci de votre coup de main

A plus

1 réponse

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
9 juil. 2008 à 19:50
bonjour,
essaye un peu avec ceci...
    If Val(Cells(h, 1).value) = Val(Nchrono) Then 
        Lot1.ControlSource = "C" & h 
    else
        Exit Sub 
   End If 

A+
0
Salut,
Merci de m'avoir répondu.
J'ai pas trop suivi ce que tu m'a conseillé, parce qu'en voulant simplifier le problème , je me suis apercu que je n'avais pas donner tous les éléments.
Mais j'ai tout de même réusssi à faire une bidouille qui marche pas trop mal.
Donc à titre indicatif, voilà la solution:

Private Sub reactualiser_Click()
Dim Cell As Range
Dim h As Integer
Workbooks("Bdd").Worksheets("Bdd").Activate
For h = 3 To 1000
If Val(Cells(h, 1)) = Val(Nchrono) Then
If CStr(Cells(h, 2)) = CStr(indice) Then
Lot1.ControlSource = "C" & h
If Not (Val(Cells(h + 1, 1)) = Val(Nchrono)) Then
Exit Sub
End If
If Not (CStr(Cells(h + 1, 2)) = CStr(indice)) Then
Exit Sub
End If
Dim h2 As Integer
h2 = h + 1
Lot2.ControlSource = "C" & h2
Exit Sub
End If
End If
Next h
End Sub


En tout cas c'est agréable de voir qu'il y a des gens toujours présents pour répondre. Donc certainement à une prochaine pour un AUTRE problème

Merci encore
0