Recherche ListBox Multicolonne

Tonio

XLDnaute Nouveau
Bonsoir le Forum


Juste une petite question a 2 €.
J’ai une ListBox avec 25 colonnes différentes dans un USF et je voudrais savoir s’il était possible de faire des recherches sur les colonnes B, C, D, E, depuis un TextBox.
Soit directement, sans sélection de la colonne, soit en sélectionnant la colonne avec des OptionButton.
Je voudrais que les données affichée dans la ListBox ne s'efface pas comme dans une recherche normale pour ne faire apparaître que la valeur désirée (ce que j’ai déjà fait ), mais au contraire que les valeurs soit filtre, toujours visible et que la ligne de la valeur désirée soit sélectionnée.

Si quelqu’un peut m’aider la dessus ce serrai sympa.

Par avance Merci…

A+……….Tonio.
 

Hervé

XLDnaute Barbatruc
bonsoir tonio

en pièce jointe, une proposition.

:)

salut [file name=Classeur1_20051007005650.zip size=12351]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051007005650.zip[/file]
 

Pièces jointes

  • Classeur1_20051007005650.zip
    12.1 KB · Affichages: 106

Tonio

XLDnaute Nouveau
Bonsoir le Forum
Bonsoir Hervé

Effectivement ça peut ressemblé a ça, mais je veut pouvoir rentrée une valeur a recherche dans une TextBox pour qu’elle s’affiche automatiquement dans la ListBox. (Car j’ai plus de 1850 lignes sur 25 colonnes).

Merci pour ta rapidité et ta patience.

A+………Tonio
 

Hervé

XLDnaute Barbatruc
re tonio

En pièce jointe, une autre proposition, qui devrait te permettre d'avancer dans ton projet.

salut
[file name=Classeur1_20051007080215.zip size=9436]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051007080215.zip[/file]
 

Pièces jointes

  • Classeur1_20051007080215.zip
    9.2 KB · Affichages: 93

Tonio

XLDnaute Nouveau
Bonsoir le Forum
Bonsoir Hervé


Ce que tu a fait et parfait et correspond a ce que je veux.
Mais je voulais savoir s’il était possible de sélectionner la ligne correspondant à la recherche taper dans la TextBox, sans avoir à effacer les valeurs de la ListBox.
J’ai colle ton code a la « TextBox1_Change » pour pouvoir avoir le trie lettre par lettre, mais des que la sélection et faite je n’ai plus que la sélection en question et moi je voudrais juste la sélectionner tout en gardent le reste des valeurs (ligne) a l’écran.
Ci-joint un petit model.


Merci pour ton attention.

A+………..Tonio
 

Tonio

XLDnaute Nouveau
oups le model... [file name=ClasseurTonio_20051007223719.zip size=29163]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ClasseurTonio_20051007223719.zip[/file]
 

Pièces jointes

  • ClasseurTonio_20051007223719.zip
    28.5 KB · Affichages: 59

Tonio

XLDnaute Nouveau
oups le model... [file name=ClasseurTonio_20051007223752.zip size=29163]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ClasseurTonio_20051007223752.zip[/file]
 

Pièces jointes

  • ClasseurTonio_20051007223752.zip
    28.5 KB · Affichages: 49

Hervé

XLDnaute Barbatruc
Bonsoir tonio

Si tu veux sélectionner un item d'une listbox dès la saisie d'un caractère dans une TXT, alors essaye ceci :

Private Sub TextBox1_Change()
Dim i As Integer
Dim j As Byte

With ListBox1
   
For i = 0 To .ListCount - 1
       
For j = 1 To Len(TextBox1)
           
If Mid(.List(i), 1, j) = TextBox1 Then
                .ListIndex = i
               
Exit Sub
           
End If
       
Next j
   
Next i
End With
MsgBox 'Aucune référence trouvée. Merci de recommencée.'
ListBox1.ListIndex = -1
End Sub


Pour remplir une listbox avec 25 colonnes (waouh l'userform), tu peux essayer de passer par un tableau vairiant, ce type de code devrait faire l'affaire :

Public Sub vv()
Dim tableau As Variant

tableau = Range('a1:y100')

With ListBox1
    .ColumnCount = 25
    .List = tableau
End With
End Sub


salut
 

Tonio

XLDnaute Nouveau
Re..

J'ai oublier
Pour alimenter ma ListBox jutilise la fonction Rowsource

Sub IniList2()
Dim Ligne As Integer

Ligne = Worksheets('Fichier').Range('A65536').End(xlUp).Row
UserStock.ListBox2.RowSource = 'Fichier!A1:Z' & Ligne

With UserStock.ListBox2
.ColumnCount = 25
.ColumnWidths = '0;95;70;130;130;80;70;100;100;100;100;80;80;70;80;70;80;140;60;80;70;80;50;50;50'
End With
End Sub

A+........Tonio
 

Hervé

XLDnaute Barbatruc
re tonio

euh, je me suis appuyé sur ton fichier, tonio.

Et celui-ci ne présentait une listbox qu'avec 1 colonne :unsure:

Donc j'ai pas eu besoin de travailler sur une colonne de recherche.

Tu voulais que je fasse une listbox avec 25 colonnes ?

Ah bon, j'avais pas compris alors.

qu'elles sont les colonnes à mettre dans la listbox ?
comment veux tu choisir la colonne de recherche ?

A mon avis (mais ca n'engage que moi), une listbox avec 25 colonnes ca devient vite illisible. je serais toi, je garderai une listbox avec les références, puis quand l'utilisateur à choisi, je renverai les autres info de la ligne dans des textbox.

Mais si tu veux une listbox à 25 colonnes, pas de problème.

en attendant ta réponse à mes deux petites questions.

salut

PS sinon le code que je t'ai donné, est à mettre à la place de celui que tu avais.
 

Hervé

XLDnaute Barbatruc
re tonio

nos messages se sont croisés.

on travaille sur le meme fichier tonio.

moi pour l'init de la listbox, j'ai ca :

Dim x As Integer
Me.ListBox1.Clear
Me.TextBox2 = ''
Me.TextBox3 = ''
Me.TextBox4 = ''
Me.TextBox5 = ''
If ComboBox1.Value = 'Code T' Then
For x = 2 To Sheets('Fichier').Range('A65536').End(xlUp).Row
If Sheets('Fichier').Range('A' & x) <> '' Then Me.ListBox1.AddItem Sheets('Fichier').Range('A' & x)
Next
ElseIf ComboBox1.Value = 'Code M' Then
For x = 2 To Sheets('Fichier').Range('B65536').End(xlUp).Row
If Sheets('Fichier').Range('B' & x) <> '' Then Me.ListBox1.AddItem Sheets('Fichier').Range('B' & x)
Next
ElseIf ComboBox1.Value = 'Designation T' Then
For x = 2 To Sheets('Fichier').Range('C65536').End(xlUp).Row
If Sheets('Fichier').Range('C' & x) <> '' Then Me.ListBox1.AddItem Sheets('Fichier').Range('C' & x)
Next
ElseIf ComboBox1.Value = 'Designation M' Then
For x = 2 To Sheets('Fichier').Range('D65536').End(xlUp).Row
If Sheets('Fichier').Range('D' & x) <> '' Then Me.ListBox1.AddItem Sheets('Fichier').Range('D' & x)
Next
End If

je comprend plus rien :)

salut
 

Tonio

XLDnaute Nouveau
Bonsoir le forum
Bonsoir Hervé

Je vais essayer de te résumer le problème :
Avec l’aide de Pascal76 j’ai créer un USF1 avec une Listbox1, un TextBox1 et une Combobox pour sélectionnée la colonne de recherche (ce-lui que je t’ai envoyer), mon idée de départ était de :

1/ Rechercher la valeur désirée pour qu’elle s’affiche dans la ListBox1.
2/ Puis de Double-clic dans la ListBox1 pour ouvrir un autre USF2 ou je remplie des TextBox avec les valeurs des 25 autres colonnes.

Malheureusement je n’arrive pas a remplir les TextBox du USF2 depuis la listBox1 du USF1 du au Fet que je n’ai qu’une colonne qui s’affiche dans ListBox1 et choix de 4 colonne de recherche dans Combobox.
J’ai donc décider de créer une 2° ListBox avec toutes les colonnes pour pouvoir remplir les TextBox du 2° USF, et ça marche a merveille.
Mon souci c’est que je voudrais pouvoir recherche une valeur depuis une TextBox sur une des 4 colonnes (choix des colonnes possible) – (plus de 1850 lignes oblige) et qu’elle soit sélectionner dans la ListBox2 (sélectionner et ne pas effacer les valeurs afficher – comme ta dernière demo – parfaite) pour voir le détail ou Double-clic pour voir et modifier les valeurs.

Voila j’espère que tu mas compris et que je me suis bien exprimer

Éventuellement si tu as une idée ou solution pour remplir les TextBox de USF2 depuis la ListBox1 (donc avec une seul colonne), ça serai encore mieux, le souci est que j’ai la Combobox pour sélectionner la colonne de recherche, colonne B, C, D, E, donc tout est décaler a chaque fois.

Voila tu sait tout.

Merci pour ton aide

A+………Tonio
 

Hervé

XLDnaute Barbatruc
Bonsoir tonio

désolé pour cette réponse tardive.

En pièce jointe, une proposition.

je remplis la listbox avec toutes les données des 4 premieres colonnes dans une seule colonne de la listbox.

j'utilise la textbox pour rechercher une donnée ou je la sélectionne directement.

en cliquant sur le bouton 'Vers userform2', un nouvel usf apparait avec 20 textbox prérempli.

en appuyant sur valider de ce nouveau USF, la BDD se met à jour.

En espérant que cette méthode pourra t'aider.

salut

PS : pour une question de lisibilité des nouveaux codes, j'ai supprimé tout ce qui avait été fait auparavant. je te laisse le soin de remettre tes macros. désolé.

[file name=ClasseurTonioV2.zip size=28564]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ClasseurTonioV2.zip[/file]
 

Pièces jointes

  • ClasseurTonioV2.zip
    27.9 KB · Affichages: 109

Discussions similaires

Réponses
16
Affichages
627

Statistiques des forums

Discussions
314 634
Messages
2 111 445
Membres
111 139
dernier inscrit
Double-V