find->listbox.additem

T

toubib

Guest
Bonjour à tous,

j'ai un ptit soucis avec un USF et la fonction Find, voici le code:
Code:
Private Sub CommandButton1_Click()

Dim t As String
Dim r As Range
Dim plage As Range

With Sheets('données')
derl = .Range('a65536').End(xlUp).Row
End With

Set plage = Sheets('données').Range('a7:a' & derl)
t = TextBox1.Value

For Each r In plage
With Sheets('données')
Cells.Find(What:=Left(TextBox1.Value, 3), After:=.Range('a7:a' & derl), _
SearchDirection:=xlNext, MatchCase:=False).Activate
End With
ListBox1.AddItem Sheets('données').selection.Offset(0, 14)
Next r

End Sub

ce que je cherche donc à faire c'est que quand l'utilisateur inscrit une info dans la textbox, et bien ca aille chercher dans la feuille données toutes les cellules contenant les trois premières lettres de ce qu'il a tapé (d'où le Left(TextBox1.Value, 3)) et que la value de ces cellules soit incluse à la listbox.

ex: je tape caroline dans ma textbox, j'aimerais qu'il m'ajoute à ma listbox tous les éléments présents dans la feuille données qui contiennent les trois premmières lettres de ce mot donc s'il y a des carine, des carole, des carter et bien que cela les ajoute à la listbox.

mon soucis se passe surtout au niveau du find, j'ai essayé avec with sheets('données) et sans et ca ne marche pas!
avez vous des idées de ce qui cloche? :)

Message édité par: toubib, à: 24/11/2005 11:04

Message édité par: toubib, à: 24/11/2005 11:39
 
T

toubib

Guest
pourquoi faire compliqué et certainement faux quand on peut faire simple et certainement plus bon:

voila le nouveau bout de code qui me parait beaucoup, qui ne plante pas mais qui ne m'ajoute rien, pourquoi d'après vous?

Code:
Private Sub CommandButton1_Click()

With Sheets('données')
derl = .Range('a65536').End(xlUp).Row
End With

t = TextBox1.Value

For I = 7 To derl
With Sheets('données')
If .Range('a' & I).Value = Left(t, 3) Then
ListBox1.AddItem Sheets('données').Range('a' & I)
End If
End With
Next I

End Sub

Message édité par: toubib, à: 24/11/2005 11:39
 

Hervé

XLDnaute Barbatruc
BOnjour toubib, le forum

Tu testes les 3 premiers caractères de ta textbox avec les éléments de ta colonne A, ne faudrait-il pas aussi tester les 3 premiers caractères de celle-ci ?

si oui, essayes ce code :


Private Sub CommandButton1_Click()
Dim derl As Integer
Dim i As Integer
With Sheets('données')
derl = .Range('a65536').End(xlUp).Row
       
For i = 7 To derl
               
If Left(.Range('a' & i), 3) = Left(TextBox1, 3) Then
                        ListBox1.AddItem .Range('a' & i)
               
End If
       
Next i
End With
End Sub


si non, places nous une pièce jointe avec un exemple.

salut
 
T

toubib

Guest
bon à priori ca n'a pas marché hervé, donc voici un fichier d'exemple,

quand on tape par exemple caroline, j'aimerais que dans la listbox apparaissent donc tous les prénoms contenus dans la colonne A qui commencent par les trois mêmes premières lettres que caroline soit 'car'

j'espère que ca vous aidera :) [file name=essai_20051124120948.zip size=8399]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essai_20051124120948.zip[/file]

Message édité par: toubib, à: 24/11/2005 12:10
 

Pièces jointes

  • essai_20051124120948.zip
    8.2 KB · Affichages: 43
T

toubib

Guest
bon c'est le left qui pose problème, car si je mets un stop sur la ligne juste après le left, il ne s'arrête pas et si je les enlève en disant:
If .Range('a' & i) = TextBox1 Then
et ben la ca marche donc il doit certainement y avoir une syntaxe particulière pour cela mais laquelle alors la... :s
 

Hervé

XLDnaute Barbatruc
Re toubib

réponse tardive, j'etais en RDV extérieur comme on dit. désolé :)

le code pour le bouton :


Option Compare Text 'permet de comparer des minuscules et des majuscules
Private Sub CommandButton1_Click()
Dim i As Integer
ListBox1.Clear
For i = 1 To Range('a65536').End(xlUp).Row
       
If Left(Cells(i, 1), 3) = Left(TextBox1, 3) Then
                ListBox1.AddItem Cells(i, 1)
       
End If
Next i
       
End Sub


Sinon, si tu veux te passer du bouton, tu peux utiliser directement la textbox, dès qu'une lettre est tapée la listbox se met à jour (à essayer, j'aime bien ce principe) :


Option Compare Text 'permet de comparer des minuscules et des majuscules
Private Sub TextBox1_Change()
Dim i As Integer
ListBox1.Clear
For i = 1 To Range('a65536').End(xlUp).Row
       
If Left(Cells(i, 1), Len(TextBox1)) = TextBox1 Then
                ListBox1.AddItem Cells(i, 1)
       
End If
Next i
       
       
End Sub


Pense bien à placer : option compare text en tete de ton module de ton userform, ceci te permet de t'affranchir des majuscules/minuscules.

salut
 
T

toubib

Guest
merci bcp hervé, ca marche super :)
et c'est vrai que le LEN fait des merveilles (je dis parce que c'est le seul mot que je connais pas et qui semble produire l'effet d'apparition des objets dans la listbox ;))

bonne soirée à toiet à tous les xldiens :)
 

Discussions similaires

Réponses
1
Affichages
192
Réponses
0
Affichages
170
Réponses
2
Affichages
171

Statistiques des forums

Discussions
312 387
Messages
2 087 860
Membres
103 671
dernier inscrit
rachid1983