XL 2016 Résolu - TextBox ListBox Recherche Multicolonnes

jorge1201

XLDnaute Occasionnel
Bonjour le forum,

J'ai trouvé un code de patricktoulon (septembre 2020 excel downloads) qui permet d'effectuer une recherche à partir d'un TextBox sur un tableau d'un ListBox. L'avantage avec ce code est que la recherche se fait sur toutes les colonnes du tableau. J'essaie de l'adapter à mon projet mais je n'arrive que partiellement.

A l'ouverture du formulaire, la ListBox se rempli correctement. Lorsqu'on insère un carácter dans le TextBox, la recherche se fait mais avec quelques distorsions (une partie des informations de la dernière colonne de la ListBox est remplacé par de chiffres).

Je vous mets, en pièce jointe, un petit fichier dans l'espoir de susciter la curiosité d'une personne qui pourrait m'aider.
D'avance, tous mes remerciements. Jorge.
 

Pièces jointes

  • TextBox Recherche Multicolonnes_V1.xlsm
    30.3 KB · Affichages: 30

GALOUGALOU

XLDnaute Accro
bonsoir jorge1201 bonsoir le forum
je suis bien incapable d'expliquer le comportement du formulaire conçu par Patricktoulon, je vais le laisser vous apporter la solution à votre problème
Je maitrise un peu mieux une solution proposée par M boisgontier avec un tableau structuré. je l'ai adapté à votre classeur.
faites un essai
le but vous apportez un maximum de solution pour que vous ayez le choix.
cdt
galougalou
 

Pièces jointes

  • Recherche Multicolonnes_boisgontier.xlsm
    55.7 KB · Affichages: 29

jorge1201

XLDnaute Occasionnel
Bonsoir GALOUGALOU, le forum,
Merci pour la réponse. J'ai sommairement testé et ça a l'air de bien fonctionner mais je dois tester d'avantage et surtout essayer de comprendre.
Je suis un peu impressionné (et un peu perdu également) par le code. Il y a, à mon avis, un grand travail d'adaptation à faire et je ne suis pas sûr d'y arriver mais je reviendrais après les tests. Encore merci pour ton intervention. Cordialement, Jorge.
 

cp4

XLDnaute Barbatruc
Bonjour @GALOUGALOU , @Eric C ,@jorge1201 :)

@jorge1201 : La dernière colonne contient le n° de ligne sur la feuille. Il suffit de neutraliser la ligne de code qui neutralise l'ajout du n° de ligne.
Pour le reste même remarque que Galougalou;)
VB:
Private Sub UserForm_Activate()
    Dim i&
    Set Ws = ThisWorkbook.Worksheets("DataBase")
    tableau = Ws.Range("B5:F" & Cells(Rows.Count, 2).End(xlUp).Row).Value
    ReDim tbl(2 To UBound(tableau))    'dès la deuxième colonne (B)
    ListBox1.List = tableau
    ListBox1.ColumnCount = UBound(tableau, 2)
    For i = 2 To UBound(tableau)
        tbl(i) = "|" & Join(Application.Index(tableau, i, 0), "|") & "|"     'on join la ligne du tableau dans la ligne i de tbl
''''   tableau(i, 5) = i + 1    'on ajoute le numero de ligne en derniere colonne
        DoEvents    'pour ne pas attendre la fin de concstruction de tbl pour l'affichage complet de la liste
    Next
End Sub
Bonne journée
 

GALOUGALOU

XLDnaute Accro
re jorge1201
explications sur le code

VB:
 Set f = Sheets("DataBase") 'le nom de votre feuille
 NomTableau = "Tableau1" ' le tableau structuré à créer dans la feuille
les deux lignes à adapter, ici la feuille DataBase et le nom du tableau Tableau1. dans toutes les lignes ou il y a marqué tableau on ne touche à rien
Code:
 ColCombo = Array(1, 2, 3, 4, 5) 'il y a 6 combobox disponible, ici sont visible  5 sur 6
 ' A adapter (1 à 6 colonnes maxi)
dans le formulaire de base 6 combo sont disponibles. Elles ne sont visibles que si elles sont déclarés dans cette ligne
si vous déclarer Array(2, 4,) il n'y aura que deux combobox visibles( la une et la deux) qui chercheront l'information dans les colonnes deux et quatre du tableau (et pas de la feuille)
Code:
 colVisu = Array(1, 2, 3, 4, 5)   'meme explication que pour colcombo
la déclaration concerne les colonnes visibles dans la listbox. si vous aviez eu un tableau à 15 colonnes, vous auriez pu déclarer, Array(2, 9, 11, 12, 14, 15) et vous auriez eu 6 colonnes visibles dans la listbox les colonnes 2, 9, 11, 12, 14, 15 du tableau et pas de la feuille
Code:
colInterro = Array(1, 2, 3, 4, 5)
ici concerne la textbox de recherche. les lettres saisies dans la textbox sont cherchés dans les colonnes déclarées. Les mots saisis peuvent être partiel ,saisie dans le désordre, commencé à la deuxième ou troisième lettre

bien évidemment, dans toutes ces lignes, les déclarations doivent être conformes au tableau. si vous avez un tableau à 5 colonnes les déclarations doivent être inférieure ou égale à 5. il ne faut pas déclarer 6 ou 7 etc

suite à la remarque d'éric, je vous ai changé le code d'impression, maintenant il crée un classeur temporaire. la feuille résultat est inutile.

vous prenez toutes les autres lignes de code tel quel. vous rajoutez vos procédures et ça devrait fonctionner
cdt
galougalou
 

Pièces jointes

  • Recherche Multicolonnes_boisgontier v2.xlsm
    47.8 KB · Affichages: 30
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
Bonjour
et ben mes amis pour quelque chose d'aussi simple

erreur 1° quand on prend un tableau dans une plage
que la ligne dans la plage commence en ligne 5 ou 1, l'index ligne 1 du tableau sera toujours 1

erreur2°
quand on utilise mon principe pour inclure les index de ligne sur feuille on prend une colonne en plus

il est normal que ces deux erreur aient tout foutu en l'air

bref
j'ai ajouté l'auto remplissage des textboxs si 1 seul item trouvé automatique
j'ai ajouté le remplissage des textbox au click listbox

Pfffff...... pauvre de moi :rolleyes:
puré je suis pas aidé hein
LOL

si ça continu je démissionne😅😂🤣😇
 

Pièces jointes

  • TextBox Recherche Multicolonnes_V1 on garde ma methode et puis c'est tout.xlsm
    30.4 KB · Affichages: 28

jorge1201

XLDnaute Occasionnel
Bonjour à vous tous, le forum,
Tout d'abord : félicitations pour le rendu!

- GALOUGALOU : Ce qui me paraissait au premier abord impressionnante, l'était un peu moins à fur et mesure du temps nécessaire qu'il m'a fallu pour me familiariser avec ce code "intense". Mon premier commentaire faisait état de la difficulté que je voyais à adapter ce code à mon projet. En fait, il n'en était rien puisque, sans m'apercevoir, tu l'avais déjà adapté. Avec la version 2 (et avec les commentaires de Eric C), le code était encore plus compréhensible. En réalité il ne s'agit pas d'un modèle qui se limite à montrer la recherche intuitive multicolonnes mais d'une véritable base de données équipée des fonctions de base (ajouter, modifier, supprimer, imprimer, consulter et rechercher). A garder comme modèle.

- patricktoulon : J'ai eu la chance d'avoir pu faire corriger mes esquisses par le propriétaire du code. J'aime bien quand tu listes les erreurs commis (Erreur 1, Erreur 2,...) car ça nous permet d'avancer dans la compréhension de ce langage. J'aime bien aussi ton esprit de synthèse, on dirait que tu cherches à faire un maximum avec un minimum. Ta réponse à ma demande et l'ajout en prime du transfert vers les TextBox : tout simplement impeccables.

A vous tous, GALOUGALOU, patrictoulon, Eric C, cp4 et bien entendu à M Boisgontier, un grand merci.
Cordiales salutations, Jorge.
 

patricktoulon

XLDnaute Barbatruc
RE
Bonsoir à a tous

@jorge1201
- patricktoulon : J'ai eu la chance d'avoir pu faire corriger mes esquisses par le propriétaire du code. J'aime bien quand tu listes les erreurs commis (Erreur 1, Erreur 2,...) car ça nous permet d'avancer dans la compréhension de ce langage. J'aime bien aussi ton esprit de synthèse, on dirait que tu cherches à faire un maximum avec un minimum. Ta réponse à ma demande et l'ajout en prime du transfert vers les TextBox : tout simplement impeccables.
c'est exactement ça
je suis assez pragmatique
j'essaie de "dé compliquer" la méthode afin quelle soit accessible même au débutant
certains prennent ça comme de la condescendance mais il n'en est rien
il est vrai que je m'embarrasse peu avec la retenue ou la diplomatie , quand c'est pas bon je le dis ;)
surtout quand c'est mes codes
 

patricktoulon

XLDnaute Barbatruc
petite remarque pour @GALOUGALOU
je suis bien incapable d'expliquer le comportement du formulaire conçu par Patricktoulon, je vais le laisser vous apporter la solution à votre problème
Je maitrise un peu mieux une solution proposée par M boisgontier avec un tableau structuré. je l'ai adapté à votre classeur.
il serait sympa de rendre a césar ce qui est à César
la plupart des codes que j'ai vu dans ton fichier sont les miens pas ceux de boisgontier jacques
 

GALOUGALOU

XLDnaute Accro
re patrick toulon
Loin de moi l'idée de détourner de son créateur les codes ci-dessus évoqués. Si tu en revendiques la paternité je ne le contesterais pas.😏

Pour ce qui me concerne je n'ai aucune formation en informatique et j'évolue en furetant sur le net. j'ai découvert excel en 2015.
il se trouve que le site de M Boisgontierj démocratise excel et met à disposition des informations et des classeurs librement consultable. c'est bien plus facile que de décortiquer la bible excel.
Historiquement, dans l'ancien site, j'y ai trouvé le classeur proposé dans le fil 2 sur l'équivalent de la page suivante
Sur le classeur que j'ai proposé je ne saurais dire qui est le concepteur des codes basé sur le vba, mais ce qui compte, c'est que ceux ci soient librement accessible à la communauté, de sorte que la connaissance soit partagé par le plus grand nombre.
J'ajouterais que lorsque je consulte tes commentaires sur excel dowload, j'adore,;) car ils sont très pertinents et permettent la compréhension par le plus grand nombre, c'est bien là l'essentiel.
Comme à mon habitude, j'ai récupéré le classeur que tu as proposé dans le fil 9, ce qui me permettra de le décomposer pour l'analyser, le comprendre et le restituer.
Donc pour moi pas de problème,😇 je ne sais pas qui est césar, mais je laisse à césar ce qui appartient à césar.
cdt
galougalou
 

Pièces jointes

  • boisgontierj 2.JPG
    boisgontierj 2.JPG
    84.3 KB · Affichages: 50
  • boisgontierj.JPG
    boisgontierj.JPG
    162.7 KB · Affichages: 46
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

la p'tite méthode à ma pomme (par mapomme).

  1. On utilise une ListBox multicolonne
  2. On utilise deux boutons d'option plutôt que deux Textbox
  3. Une sélection au sein de la ListBox remplit les textbox à gauche
  4. le code est commenté
 

Pièces jointes

  • jorge1201- TextBox Recherche Multicolonnes- v1.xlsm
    32.9 KB · Affichages: 47
Dernière édition:

Discussions similaires