thyphonfalcon
Messages postés41Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention12 mai 2007
-
11 déc. 2006 à 20:54
thyphonfalcon
Messages postés41Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention12 mai 2007
-
11 déc. 2006 à 23:25
Bonjour,
Depuis une listebox, j'essaye de trouver le texte correspondant dans un textbox.
là pas de sousis mais je sais pas pourquoi, à mon dernier item dans ma listbox j'ai le message
Error : depassement de capacité.
voilà mon code
je déclare ceci
Private Find As String
Dim b As Integer, a As Boolean
Dim Position As Variant
Private Sub list1_click()
Select Case Index
Case 0
wFind = List1.Text
a = True
b = Position
If a Then
txtEdition.SetFocus
txtEdition.SelStart = 1
Position = InStr(txtEdition.SelStart + b + 1, LCase$(txtEdition.Text), LCase$(wFind))
If Position <> 0 Then
txtEdition.SelStart = Position - 1
txtEdition.SelLength = Len(Find)
Else
b = Position
End If
End If
Case 1
End Select
End Sub
je sèche là....une petite aide serait la bienvenue merci
DavidWhitewater
Messages postés81Date d'inscriptionlundi 10 avril 2006StatutMembreDernière intervention 1 janvier 2010 11 déc. 2006 à 22:22
Salut,
"je sèche là...." , ouaip, ben moi aussi je sèche, mais c'est pour comprendre ton code.
-> Select Case Index : Tu utilise une variable qui n'est n'y déclarer, ni assigner. Si tu est sous VB6, ça dois être un VARIANT, égale à 0.
-> Case 0 : C'est toujours le cas
-> a = True : 'a' est bien déclarer, mais dans une autre procédure, et elle est Private, donc inaccessible
-> b = Position : 'b' idem que 'a', 'position' idem que 'index'
-> If a Then : 'a' est toujours égale à TRUE
-> Case 1 : Vu que 'index' n'est pas pas assigné, ce cas ne se présente jamais.
Tu devrais reprendre toute ta procédure depuis zéro.
thyphonfalcon
Messages postés41Date d'inscriptionvendredi 27 octobre 2006StatutMembreDernière intervention12 mai 2007 11 déc. 2006 à 23:25
En fait voilà, après un chti repos, j'ai le code
Public Position As Variant
Private Sub list1_Click()
Position = InStr(Position + 1, txtEdition.Text, List1.Text)
txtEdition.SelStart = Position
txtEdition.SelLength = Len(List1.Text)
txtEdition.SetFocus
End Sub
Private Sub list1_change()
Position = 0
End Sub
J'ai épuré pas mal de truc, simplifié mon programme et voilà,
maintenant la recherche ce fait sans bugs....Merci Monsieur DavidWhiteWater
et jmfmarques
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 11 déc. 2006 à 21:35
Relis déjà ce que tu as écrit, à savoir :
Private Sub list1_click()
Select Case Index
Case 0
wFind = List1.Text
a = True
b = Position
If a Then ' ben : si a = true, cette condition est toujours vraie, ma foi !
txtEdition.SetFocus
txtEdition.SelStart = 1
Position = InStr(txtEdition.SelStart + b + 1, LCase$(txtEdition.Text), LCase$(wFind))
If Position <> 0 Then
txtEdition.SelStart = Position - 1
txtEdition.SelLength = Len(Find)
Else ' et on ne risque pas d'être dans ce cas, ma foi ! b Position 'ah bon : avant : b était poition et maintenant on cjange : b = position (et comme position n'est pas encore ' calculé, donc avant ; b 0 et maintenant, bien sur, b 0)
End If
End If
Case 1
End Select
End Sub
Veux-tu bien suivre ce que tu as écrit, tâcher de comprendre ce que TU as écrit... et revenir avec du plus cohérent, s'ul te plait ? (et celà n'a pas vraiment grand chose à voir avec VB mais, beaucoup plus directement, avec la logique de ce qui est exprimé là !...)