Champ de recherche en VBA

Bonjour à tous,

Ayant des notions très limité à propos du combo Excel / VBA, je me suis donc tout naturellement retrouvé par ici après quelques recherches. Pour un projet, j'ai décidé d'utiliser l'excellent champ de recherche en VBA proposé ici : https://www.excel-pratique.com/fr/astuces_vba/champ-de-recherche-vba/

Tout marche à merveille, j'utilise ce dernier en complément d'un masque de saisie pour aller chercher des termes dans un index et les rapatrier dans une des cellules du formulaire. J'ai légèrement modifié le code afin que la recherche s'effectue sur 2 colonnes et que l'affichage dans la listbox propose les résultats de ces 2 colonnes (ce n'est sans doute pas très propre mais ça fonctionne )

Pour que mon fichier soit visuellement moins chargé, j’aurais cependant souhaité que l'index se situe sur une autre feuille que celle du masque. La listbox et la textbox resteraient par contre sur la feuille contenant le masque. Et après de nombreux essais, rien n'y fait, impossible de mettre ça en place!

Un peu d'aide serait donc fort appréciée!

Une autre demande concernant ce moteur de recherche suivra par la suite, là encore, j'ai pu résoudre une partie du problème, mais je reste bloqué arrivé à un certain point...

Merci par avance et bonne journée.

Bonjour,

Après quelques essais, J'ai finalement réussi à arriver à mes fins. Voici le code que j'utilise :

Private Sub TextBox1_Change()

Application.ScreenUpdating = False

Worksheets("Index").Range("I15:J5000").Interior.ColorIndex = 0

    ListBox1.Clear

    If TextBox1 <> "" Then

        For ligne = 15 To 5000
            If Worksheets("Index").Cells(ligne, 9) Like "*" & TextBox1 & "*" Then
                Worksheets("MasqueDeSaisie").ListBox1.AddItem Worksheets("Index").Cells(ligne, 9)
                Worksheets("MasqueDeSaisie").ListBox1.AddItem Worksheets("Index").Cells(ligne, 10)
            End If
            If Worksheets("Index").Cells(ligne, 10) Like "*" & TextBox1 & "*" Then
                Worksheets("MasqueDeSaisie").ListBox1.AddItem Worksheets("Index").Cells(ligne, 9)
                Worksheets("MasqueDeSaisie").ListBox1.AddItem Worksheets("Index").Cells(ligne, 10)
            End If
        Next

    End If

End Sub

Le temps de rédiger ma seconde question et j'édite ce message

Voici donc ma seconde question à propos de l'utilisation de cette zone de recherche. J'y ais combiné un boutton, qui à l'aide de la macro suivante me permet de copier ma sélection dans une cellule donnée de mon formulaire de saisie :

Sub Test_FunctionArea1()
    Dim i, TmpList As String

    TmpList = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            TmpList = TmpList & ListBox1.List(i) & " & "
        End If
    Next i

    MsgBox TmpList
    Range("B7").Select
    ActiveCell = Left(TmpList, Len(TmpList) - 3)

End Sub

Si je sélectionne plusieurs des lignes qui correspondent à ma recherche, ces dernières s'affichent dans la cellule cible, séparées par le caractère &.

Par contre j'aurai souhaité que je puisse faire de même avec plusieurs recherches différentes. Ici, une fois mes valeurs copiées, si je fait une nouvelle recherche et utilise à nouveau le boutton, les nouvelles entrées écrasent les précédentes.

J'espère avoir été clair!

Si jamais quelqu'un avait une idée, qu'il n'hésite pas!

Merci

Bonjour,

Malgré de nombreux essais, je n’arrive malheureusement à rien de concret, ni même à quoi que ce soit qui s’en rapproche!

Comme vous le verrez dans le fichier joint, j’utilise la textbox pour chercher des éléments dans un index (des mots et des codes correspondants), et les rapatrier dans la listbox (sélection multiple). Après avoir choisi les ou les codes nécessaires, je copie ces derniers dans une cellule cible, séparés par un point-virgule s’il y a plusieurs valeurs.

Exemple : je recherche «terme», la listbox se remplit avec les occurrences «terme 1», «terme 2», etc. Je fais ma sélection des codes correspondants, clique sur le bouton et voilà mes choix dans la cellule cible.

Ce que j’aimerai, c’est qu’après cette première sélection, si je recherche «mot», et sélectionne le ou les codes qui correspondent à «mot 1», «mot 2», etc., l’action de cliquer sur le bouton copie les codes dans la cellule cible, à la suite des termes déjà présents.

J’ai essayé d’être le plus clair possible, mais n’hésitez pas à demander des précisions.

En espérant qu’une personne parvienne à démêler cette affaire, car je suis vraiment à court d’idées!

Merci par avance.

Bonjour,

Personne n'a vraiment la moindre idée à me suggérer? Je suis têtu, ça fait une semaine que j’essaie diverses choses mais le mieux que je réussisse à faire est de tout planter

Rechercher des sujets similaires à "champ recherche vba"