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