Comment faire une recherche dans un textbox à partir d'un autre textbox

Fermé
Lynda_123 - 9 déc. 2020 à 13:35
ptitpanda Messages postés 65 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 8 avril 2023 - 12 déc. 2020 à 12:44
Bonjour,
Svp j'ai deux textbox dans mon userform,(textbox 1 et textbox 2) et j'aimerais savoir comment faire les recherches dans le textbox 2 à partir du textbox 1. Le textbox 2 contenant un texte organisé en articles

Je vous remercie déjà d'avance

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
9 déc. 2020 à 15:14
Bonjour,

il vaut mieux utiliser une ListBox pour les données à lister, plutôt qu'une TextBox multiline

Voir cet exemple

https://www.excel-pratique.com/fr/astuces_vba/champ-de-recherche-vba

0
Au départ je travaillais avec listbox, mais sa m'affichait le texte sur une seule ligne, et listbox n'a pas de propriété multiligne. En plus je ne parvenais pas à mettre les Scrollbar avec listbox
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > Lynda_123
9 déc. 2020 à 16:42
As-tu téléchargé le classeur exemple pour voir?
0
Oui je l'ai fait. J'ai même essayé d'appliquer la même chose mais sa ne marche pas
0
ptitpanda Messages postés 65 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 8 avril 2023 8
10 déc. 2020 à 07:36
Bonjour,

Si je peux me permettre d'intervenir, on peut le faire il suffit d'insérer un retour chariot.
Je suppose que cette discutssion a un rapport avec celle ci:
https://forums.commentcamarche.net/forum/affich-36986020-comment-afficher-le-contenu-d-une-colonne-dans-le-textbox
Si non, cela servira toujours à d'autres personnes.

Donc pour alimenter ta listbox avec une colonne du classeur (les scrollbar se mettent seules):
Private Sub UserForm_Activate()
ListBox1.Clear
For Each valeur In Range("a2:a24") 'A adapter selon le nbre de lignes et la lettre de ta colonne
ListBox1.AddItem Cells(valeur.Row, 1) & vbCr ' on ajoute dans la listbox le contenu d'une cellule + un retour de ligne
Next valeur
End Sub    


et donc ensuite il suffit d'utiliser le lien de cs_Le Pivert en l'adaptant un peu.

Bonnne journée
0
Lynda_123 > ptitpanda Messages postés 65 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 8 avril 2023
10 déc. 2020 à 07:59
Bonjour.

Ton si j'ai bien compris, ton code permet d'ajouter un élément dans la listbox. Or, je veux effectuer une recherche entre deux textbox de sorte que dès qu'on tape une recherche dans le textbox 1, sa s'affiche directement dans le textbox 2
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > Lynda_123
10 déc. 2020 à 13:55
Voir ceci

https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-G

regarde comme c'est facile avec une ListBox et une TextBox.
Il suffit de cliquer sur une ligne de la Listbox pour l'afficher dans la TextBox:

Option Explicit
Private Sub ListBox1_Click()
Dim i As Byte
    'boucle sur les éléments de la listbox
   For i = 0 To ListBox1.ListCount - 1
      If ListBox1.Selected(i) = True Then TextBox1.Value = ListBox1.List(i)
   Next i
End Sub
Private Sub UserForm_Initialize()
ListBox1.RowSource = "Feuil1!A1:A12"
End Sub


voilà avec un minimum de code!
0
Lynda_123 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
10 déc. 2020 à 15:46
Je sais que c'est facile. Mais listbox ne répond pas à mes attentes. Ça n'affiche pas bien le texte, avec la listbox tout le texte est affiché sur une même ligne, et ses propriétés ne contient pas la propriété multiligne. Raison pour la quelle je travaille avec textbox.

Tout en espérant que vous me comprenez
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > Lynda_123
10 déc. 2020 à 17:24
Ça n'affiche pas bien le texte, avec la listbox tout le texte est affiché sur une même ligne,

j'ai du mal à comprendre cela!

voici ce qui s'affiche chez moi avec le code donné:



@+
0
ptitpanda Messages postés 65 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 8 avril 2023 8
Modifié le 12 déc. 2020 à 12:44
Bonjour,

C'est vrai que, pour ma part, je n'avais pas compris que dans ta textbox tu avais carrément un texte et non pas une énumération.

Donc ce code devrait faire ce que tu veux:
Private Sub TextBox1_AfterUpdate()

    Application.ScreenUpdating = False
    If TextBox1 <> "" Then
         rech = InStr(1, TextBox2, TextBox1, vbTextCompare)
                If rech <> 0 Then
                TextBox2.SelStart = rech - 1
                TextBox2.SelLength = Len(TextBox1)
                TextBox2.SetFocus
            End If
    End If

End Sub


Il va chercher, dans ta textbox2, ce que tu as tapé dans ta textbox1

++
0