Barre de search dans Excel

Je travaille actuellement sur un projet Excel qui nécessite une barre de search. Je viens de commencer à travailler avec Excel, donc je suis vraiment un noob.

J'ai un TextBox où je peux entrer le text. Et un button à côté de celui-ci afin que je puisse exécuter la search. La search doit effectuer une search à partir de RANGE ("A: E"). Et j'en ai besoin pour mettre en évidence le résultat.

Exemple:

J'ai une string "bonjour" dans la cellule ("C12"), et si je tapez dans mon TextBox bonjour et appuyez sur le button, je veux qu'il se dirige vers cette cellule et select-le.

J'ai tout essayé, j'ai cherché sur le Web et je ne trouve rien qui puisse correspondre.

Le seul qui pourrait fonctionner est le VLOOKUP, mais j'ai besoin de plus de 1 colonne, donc ça ne fonctionnera pas. Cela devrait fonctionner comme la chose ctr + F, mais je ne trouve rien qui ressemble à ça.

Le seul code qui pourrait fonctionner est celui où je voudrais aller manuellement pour chaque cellule et le vérifier pour la string:

Sub Button1_Click() Dim Column, Row As Integer Dim Search As Ssortingng Ssortingng = TextBox.Text For Column = 1 To 5 For Row = 1 To 1048576 If Cells(Row, Column).Value = Search Then Cells(Row, Column).Select End If Next Next End Sub 

Mais ce code donne une erreur de débordement. Si vous pouviez m'aider, j'aimerais bien.

Quelque chose comme ça devrait fonctionner pour vous. Il utilise une boucle range.find au lieu d'une boucle de force brute, donc elle est beaucoup plus efficace et évitera l'erreur de débordement

 Private Sub Button1_Click() Dim rngFound As Range Dim rngSelect As Range Dim strFind As Ssortingng Dim strFirst As Ssortingng If Len(Trim(Me.TextBox.Text)) = 0 Then Me.TextBox.SetFocus MsgBox "Must provide text to search for.", , "No Search Text" Exit Sub End If strFind = Me.TextBox.Text Set rngFound = Range("A:E").Find(strFind, Cells(Rows.Count, "E"), xlValues, xlPart, MatchCase:=False) If rngFound Is Nothing Then MsgBox "No matches found for [" & strFind & "]", , "No Matches" Exit Sub Else strFirst = rngFound.Address Set rngSelect = rngFound Do Set rngSelect = Union(rngSelect, rngFound) Set rngFound = Range("A:E").FindNext(rngFound) Loop While rngFound.Address <> strFirst End If rngSelect.Select End Sub