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

Lynda_123 -  
ptitpanda Messages postés 67 Statut Membre -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731
     
    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
    1. Lynda_123
       
      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
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 731 > Lynda_123
         
        As-tu téléchargé le classeur exemple pour voir?
        0
  2. Lynda_123
     
    Oui je l'ai fait. J'ai même essayé d'appliquer la même chose mais sa ne marche pas
    0
    1. ptitpanda Messages postés 67 Statut Membre 8
       
      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
    2. Lynda_123 > ptitpanda Messages postés 67 Statut Membre
       
      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
    3. cs_Le Pivert Messages postés 8437 Statut Contributeur 731 > Lynda_123
       
      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
    4. Lynda_123 > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      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
    5. cs_Le Pivert Messages postés 8437 Statut Contributeur 731 > Lynda_123
       
      Ç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
  3. ptitpanda Messages postés 67 Statut Membre 8
     
    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