OVH Cloud OVH Cloud

rechercher dasn un tableau en VBA

4 réponses
Avatar
francois63000
Bonjour tous le monde.

Voila j'ai un tableau ( 8 colonnes 50 ligne). Ce tableau est rempli avec
des chiffres et des noms.

J'ai un Userform. qui contient un textbox et un listbox. je voudrais ( si
c'est possible) que quand je rentre un nom ou chiffre dans mon textbox, il
s'affiche dans ma listbox, l'ensemble des lignes qui contiennent ce Textbox
quelque soit son positionnement dasn la ligne

J'espère avoir expliquer suffisament simplement mon probleme .

Merci d'avance

4 réponses

Avatar
Youky
Avec ceci dés l'appui sur Enter en textbox la liste est remplie en puisant
les noms colonne A
Youky

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
ListBox1.Clear
For lig = 1 To 50
For col = 1 To 8
If TextBox1.Text = Feuil1.Cells(lig, col) Then
ListBox1.AddItem Feuil1.Cells(lig, 1): Exit For
End If
Next
Next
End Sub

"francois63000" a écrit dans le
message de news:
Bonjour tous le monde.

Voila j'ai un tableau ( 8 colonnes 50 ligne). Ce tableau est rempli avec
des chiffres et des noms.

J'ai un Userform. qui contient un textbox et un listbox. je voudrais ( si
c'est possible) que quand je rentre un nom ou chiffre dans mon textbox, il
s'affiche dans ma listbox, l'ensemble des lignes qui contiennent ce
Textbox
quelque soit son positionnement dasn la ligne

J'espère avoir expliquer suffisament simplement mon probleme .

Merci d'avance






Avatar
FdeCourt
SAlut,

Un début de solution, à adapter à tes besoins :

à mettre dans le code du userform :

Private Sub TextBox1_Change()
ListBox1.Clear
With Worksheets(1).Range("a1:h50")
Set c = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
adresse1 = c.Address
ListBox1.AddItem (Cells(c.Row, 2).Value)
Do
Set c = .FindNext(c)
ListBox1.AddItem (Cells(c.Row, 2).Value)
Loop While Not c Is Nothing And c.Address <> adresse1
End If
End With
End Sub

On 1 fév, 14:54, francois63000
wrote:
Bonjour tous le monde.

Voila j'ai un tableau ( 8 colonnes 50 ligne). Ce tableau est rempli avec
des chiffres et des noms.

J'ai un Userform. qui contient un textbox et un listbox. je voudrais ( si
c'est possible) que quand je rentre un nom ou chiffre dans mon textbox, il
s'affiche dans ma listbox, l'ensemble des lignes qui contiennent ce Textb ox
quelque soit son positionnement dasn la ligne

J'espère avoir expliquer suffisament simplement mon probleme .

Merci d'avance


Avatar
francois63000
je viens d'essayer. en adaptant un peu. J'ai sorti le fait que cela se
déclenche à l'appui sur "entrée". je l'ai mis dans un bouton. seulement cela
me cré un bug au niveau de la ligne
If textbox1.Text = Feuil1.Cells(lig, col) Then


Avec ceci dés l'appui sur Enter en textbox la liste est remplie en puisant
les noms colonne A
Youky

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode <> 13 Then Exit Sub
ListBox1.Clear
For lig = 1 To 50
For col = 1 To 8
If TextBox1.Text = Feuil1.Cells(lig, col) Then
ListBox1.AddItem Feuil1.Cells(lig, 1): Exit For
End If
Next
Next
End Sub

"francois63000" a écrit dans le
message de news:
Bonjour tous le monde.

Voila j'ai un tableau ( 8 colonnes 50 ligne). Ce tableau est rempli avec
des chiffres et des noms.

J'ai un Userform. qui contient un textbox et un listbox. je voudrais ( si
c'est possible) que quand je rentre un nom ou chiffre dans mon textbox, il
s'affiche dans ma listbox, l'ensemble des lignes qui contiennent ce
Textbox
quelque soit son positionnement dasn la ligne

J'espère avoir expliquer suffisament simplement mon probleme .

Merci d'avance











Avatar
francois63000
J'ai pas tout compris au code mais ça marche exactement comme je voulais

Merci à tous les deux de m'avoir consacrer un peu de votre temps et de votre
savoir




SAlut,

Un début de solution, à adapter à tes besoins :

à mettre dans le code du userform :

Private Sub TextBox1_Change()
ListBox1.Clear
With Worksheets(1).Range("a1:h50")
Set c = .Find(TextBox1.Value, LookIn:=xlValues, LookAt:=xlPart)
If Not c Is Nothing Then
adresse1 = c.Address
ListBox1.AddItem (Cells(c.Row, 2).Value)
Do
Set c = .FindNext(c)
ListBox1.AddItem (Cells(c.Row, 2).Value)
Loop While Not c Is Nothing And c.Address <> adresse1
End If
End With
End Sub

On 1 fév, 14:54, francois63000
wrote:
Bonjour tous le monde.

Voila j'ai un tableau ( 8 colonnes 50 ligne). Ce tableau est rempli avec
des chiffres et des noms.

J'ai un Userform. qui contient un textbox et un listbox. je voudrais ( si
c'est possible) que quand je rentre un nom ou chiffre dans mon textbox, il
s'affiche dans ma listbox, l'ensemble des lignes qui contiennent ce Textbox
quelque soit son positionnement dasn la ligne

J'espère avoir expliquer suffisament simplement mon probleme .

Merci d'avance