VBA -Excel pb de boucle: Exit Sub
Résolu
onra
-
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
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
A voir également:
- Vba exit sub
- Excel compter cellule couleur sans vba - Guide
- Move your sub - Télécharger - Sous-titres
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Scan unit open or exit jam - Forum Imprimante
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
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