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.
 

Tonio

XLDnaute Nouveau
Bonsoir tout le monde
Bonsoir Hervé


Avant toute chose un Grand Merci pour ton aide.
En suite ton travail et simplement Génial, mise a par le fait que ton code a des limites de capacité.
En effet j’ai remplacer les données de la demo par les vrais références (environ 1850 lignes sur 25 colonnes), et le chargement de la ListBox, no problème, la recherche, no problème, par contre lorsque je click sur « Vers userform2 », la il me dit « Dépassement de capacité » et me renvoie l’erreur suivante : « For j = 2 To UBound(tablo) ».
D’ou quelques questions me viennent à l’esprit :

1/ Avec « CurrentRegion » peu ton ajouter des références (lignes ou colonnes) et qu’il les prennent en compte comme avec « End(xlup) ». Je ne connais pas du tout le fonctionnement de la fonction « CurentRegion ».

2/ Peu ton faire en sorte que la recherche dans la TextBox se fasse aussi bien en Minuscules quand Majuscules et non pas uniquement en Majuscules.

Encore un fois Merci pour ton aide et ta patience.

Amicalement…


A+……….Tonio
 

Tonio

XLDnaute Nouveau
Bonsoir tout le monde
Bonsoir Hervé


Avant toute chose un Grand Merci pour ton aide.
En suite ton travail et simplement Génial, mise a par le fait que ton code a des limites de capacité.
En effet j’ai remplacer les données de la demo par les vrais références (environ 1850 lignes sur 25 colonnes), et le chargement de la ListBox, no problème, la recherche, no problème, par contre lorsque je click sur « Vers userform2 », la il me dit « Dépassement de capacité » et me renvoie l’erreur suivante : « For j = 2 To UBound(tablo) ».
D’ou quelques questions me viennent à l’esprit :

1/ Avec « CurrentRegion » peu ton ajouter des références (lignes ou colonnes) et qu’il les prennent en compte comme avec « End(xlup) ». Je ne connais pas du tout le fonctionnement de la fonction « CurentRegion ».

2/ Peu ton faire en sorte que la recherche dans la TextBox se fasse aussi bien en Minuscules quand Majuscules et non pas uniquement en Majuscules.

Encore un fois Merci pour ton aide et ta patience.

Amicalement…


A+……….Tonio
 

Hervé

XLDnaute Barbatruc
Bonjour tonio, le forum

le dépassement de capacité est du à une déclaration de variable sous dimenssionné. ceci me parait bizarre car j'ai déclarée mes variables integer.

Pour corriger le problème, remplace les déclarations byte par integer.

la méthode currentregion permet de sélectionner une plage délimité par des lignes et des colonnes vides.

Il existe une multitude de méthode pour remplir un tablo, et ceci dépend de la structure de ta feuille.

si ta structure correspond à ton modèle initial, a savoir des colonnes vides au milieu de ta BDD, il faut utiliser une boucle (je te ferai un code pour ceci).

Mais la meilleur présentation d'une BDD reste celle que je t'ai présenté dans mon dernier fichier. c'est celle qui permet de minimiser la longueur des codes.

Pour le point 2 : il suffit au début du module de l'userform avant la ligne dim tablo as variant, de rajouter Option Compare Text

en te souhaitant un bon dimanche

salut
 

Tonio

XLDnaute Nouveau
Bonjour le forum
Bonjour Hervé


Simplement Génial.
Effectivement ça fonctionne a merveille et cela me convient parfaitement je vais me atter d’adapter ton code a mon application.

Quand a la structure de la BDD, effectivement elle est identique au model initial
A savoir des lignes et des colonnes vides.
Petite question : si la dernière colonne ou ligne de la BDD ne contiens aucune valeur mais uniquement le Titre, sera t’elle intègre par la « CurentRegion ».

Un GRAND MERCI pour ton aide

Amicalement

A+……….Tonio
 

Hervé

XLDnaute Barbatruc
re tonio

En pièce jointe, ton fichier modifié pour tenir compte de ta structure.

Pour eviter d'avoir à saisir 20 fois

textbox1=range('a' & ligne)

Ce qui devient vite barbant, je suis passé par une boucle.

Afin de mettre en 'liaison' la textbox et la colonne, j'ai utilisé la propriété tag des textbox.

en VBA en sélectionnant une textbox, et en regardant dans les propriétés, tu trouveras le tag. dans celui-ci un chiffre est noté qui correspond à la colonne.

Ainsi on sait que la textbox1 travaille avec la colonne 1, que la textbox 9 travaille avec la colonne 22 et ainsi de suite.

pour ta question sur le currentregion. OUi la derniere colonne sera considérée par le currentregion.

Pour eviter ceci tu peux utiliser ce type de code :

Sub Bouton1_QuandClic()
Dim plage As Range

Set plage = Range('a1').CurrentRegion
Set plage = plage.Resize(plage.Rows.Count, plage.Columns.Count - 1)
plage.Select
End Sub

qui va redimenssionner ton currentregion.

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

Pièces jointes

  • ClasseurTonioV3.zip
    29.2 KB · Affichages: 86

Discussions similaires

Réponses
16
Affichages
627

Statistiques des forums

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