Recherche....car je suis perdu ! listbox

Résolu
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 mai 2007 - 11 déc. 2006 à 20:54
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 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

Thyphon

3 réponses

DavidWhitewater Messages postés 81 Date d'inscription lundi 10 avril 2006 Statut Membre Derniè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.
3
thyphonfalcon Messages postés 41 Date d'inscription vendredi 27 octobre 2006 Statut Membre Dernière intervention 12 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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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à !...)
0
Rejoignez-nous