VBA -Excel pb de boucle: Exit Sub

Résolu
onra -  
 onra -
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
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. onra
       
      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