moteur de recherche en excel

  • Initiateur de la discussion yannick
  • Date de début
Y

yannick

Guest
salut je cherche comment faire un moteur de recherche en excel pour rechercher des numéro de série :)
 

Cutbill1234

XLDnaute Nouveau
Bonjour,

Je peux peut être t'aider, j'ai du faire la même chose.

Test ceci en mofifiant ce qui ne t'interesse pas :

Sub CommandButton2_Click()
Dim countTot As Long
Dim counter As Long
Dim strSearchString As String
Dim ws As Object
Dim foundCell As Variant
Dim loopAddr As Variant
Dim returnValue As String

strSearchString = InputBox(Prompt:='Saisir la valeur à chercher.', Title:='Recherche')
If strSearchString = '' Then Exit Sub
For Each ws In Worksheets
countTot = countTot + Application.CountIf(ws.UsedRange, '=' & strSearchString)
Next ws
If countTot = 0 Then
returnValue = MsgBox(' La valeur ' & strSearchString & ' n'est pas enregistrée ', vbOKOnly, ' Message ')
Else
counter = 0
For Each ws In Worksheets
With ws
.Activate
Set foundCell = .Cells.Find(What:=strSearchString, LookIn:=xlValues, LookAt:=xlPart)
If Not foundCell Is Nothing Then
loopAddr = foundCell.Address
Do
counter = counter + 1
foundCell.Activate
If countTot = 1 Then
returnValue = MsgBox(' La valeur ' & strSearchString & ' est enregistrée 1 seule fois ', vbOKOnly, ' Message ')
Exit Sub
End If
If counter = countTot Then
returnValue = MsgBox(' La valeur ' & strSearchString & ' sélectionnée est la dernière !', vbOKOnly, 'Message')
Exit Sub
Else
returnValue = MsgBox(' La valeur ' & strSearchString & ' sélectionnée est la ' & counter & ' sur ' & countTot & ' existantes. ' & vbLf & _
' Voulez vous continuer la recherche ? ', vbYesNo, 'Message')
If returnValue = vbNo Then Exit For
Set foundCell = .Cells.FindNext(After:=foundCell)
End If
Loop While Not foundCell Is Nothing And foundCell.Address <> loopAddr
End If
End With
Next ws
End If
End Sub


Affecte un Bouton à cette macro et ça devrait marcher

Dis moi si cela te va.

Cutbill
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:moteur de recherche en excel => DEMO USF-Search

Re Bonjour Yannick, Didier, le Forum,

Bon alors j'ai déjà répondu à Yannick pour son Lien supprimé

Enfin sinon voici une démo qui fait exactement ceci ! :

=> Lien supprimé

Il s'agit d'un petit moteur de recherche à l'intérieur d'un classeur en MultiFeuilles sur tout ou partie de String.

Ensuite, un fois, les occurrences de données remontées dans une ListBox en Multi Colonnes, il est possible d'affiner la recherche en temps réél dans la ListBox en saisissant des portions de String dans une TextBox. J'ai aussi joué un peu avec des CheckBox pour encore plus affiner la recherche.

Bonne découverte et appétit à tous et toutes
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:moteur de recherche en excel => DEMO USF-Search

Bonjour CutBill, re le Fil

Sorry je ne t'avais pas vu en rédigeant ma réponse...

Par contre on peut affiner (alléger) les déclarations de tes variables en étant plus précis comme suit :

Dim countTot As Byte 'sauf si plus de 255 feuilles !
Dim counter As Byte 'Idem si plus d'occurrences...
Dim ws As Worksheet
Dim foundCell As Range
Dim loopAddr As String

Sinon je n'ai pas testé le reste...

Bon Appétit
@+Thierry
 
T

_Thierry

Guest
Re:moteur de recherche en excel => DEMO USF-Search

Re Bonjour CutBill, le Forum

Non ta recherche, ne changera pas au niveau précision... Mais ton Code oui... au niveau Optimisation

Non ce qui risque de changer c'est d'avoir moins de plantage avec ta macro en cas de machines peu puissantes et sans trop de RAM, ou encore de PCs puissants en multi-taches avec plusieurs applis qui tournent en même temps que ce genre de macros...

En effet, une déclaration précise et exacte (employée à bon escient)des variables limitera un débordement sur les ressources système... Et par delà une optimisation aussi de l'exécution...

Par exemple déclarer une Variable As Variant (ou ne pas la déclarer du tout) signifie lui réserver en espace mémoire systématiquement de 22 bytes (+ string length), c'est dommage si c'est pour une simple Variable de type Byte (1 byte) ou si c'est une Variable de type Integer (2 Bytes) ou encore un Variable de type Long (4 bytes)... ou encore une String (10 bytes + string length)

Pour ce qui est des Variables 'Object', si on précise la nature de l'objet (Ici Range) on bénéficie des Objects qui lui sont associée dans les DropDowns contextuels lors de la programmation... Et également VBA s'y retrouvera mieux sur la portée de chaque Objet, (surtout si on fait plusieurs Set d'Objets...)

Faire une recherche dans l'ancien Forum, j'avais donné pas mal d'explications sur les 'Data Types' de Variables (voir aide VBA aussi)

Bon Appétit
@+Thierry
 
G

gege

Guest
Bonjour
j'ai essayé ta macro qui fonctionne très bien pour un seul mot, parcontre j'ai plus souvent le cas d'avoir besoin de rechercher une chaîne de caractères, comme tu as l'air balaise en vb, je me retourne vers toi.

merci par avance de ta réponse (positive ou négative)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 017
Messages
2 104 584
Membres
109 084
dernier inscrit
mizab