Vbtextfinder : un moteur de recherche de mot dans son contexte en vba, vb6 et vb9

Description

VBTextFinder permet de retrouver l'ensemble des phrases (et paragraphes) contenant un mot donné que l'on recherche dans un corpus documentaire préalablement indexé (un corpus est un ensemble cohérent de documents).
Comment ça marche ? c'est très simple : lors de l'indexation d'un document, les phrases sont découpées en mots, et une collection de mots est construite en complétant la liste des numéros de phrase contenant ce mot, toutes les phrases étant conservées en intégralité avec l'index des mots qui en font partie. Ensuite, pour retrouver l'ensemble des phrases contenant un mot donné présent dans l'index, il suffit de parcourir la liste des phrases référencées par ce mot, cette recherche étant quasi-instantanée, même avec de gros document. Tout le travail est fait dans l'objet Collection de VB (une hashtable dans la version DotNet).
En bonus, certaines statistiques sont disponibles. De plus, si on précise des codes mnémoniques courts associés de façon unique à chaque document indexé, alors VBTextFinder est capable de produire un index alphabétique ou fréquentiel avec ces codes mnémoniques. Par exemple, si j'indexe plusieurs documentations de mes logiciels avec les codes mnémoniques suivants :

VBWaveComp.txt (VBWC)
VBSpamCheck.txt (VBSC)
VBLocker.txt (VBLck)
VBBrainBox.txt (VBBB)
VB2Html.txt (VB2H)
ODBCDotNet.txt (ODBCDN)
DVDClass.txt (DVDC)

VBTextFinder peux alors produire un index alphabétique dont voici un extrait :
...
applicable (1 : VBBB)
applicables (3 : VBBB)
application (45 : DVDC, ODBCDN, VB2H, VBBB, VBLck, VBSC, VBWC)
applications (16 : DVDC, VBBB, VBLck)
appliquant (1 : VBBB)
appliqué (2 : DVDC, VBBB)
appliquée (1 : VBBB)
appliquées (4 : VBBB)
appliquer (14 : ODBCDN, VBBB, VBSC)
appliqués (2 : DVDC, VBSC)
appliquez (1 : VBWC)
...

et un index fréquentiel dont voici un extrait :
...
57 : audio (DVDC, VBLck, VBWC)
57 : access (DVDC, ODBCDN, VB2H, VBBB)
56 : windows (DVDC, ODBCDN, VB2H, VBBB, VBLck, VBSC, VBWC)
56 : votre (DVDC, ODBCDN, VBBB, VBLck, VBSC, VBWC)
55 : spam (VBSC)
55 : patrice (DVDC, ODBCDN, VB2H, VBBB, VBLck, VBSC, VBWC)
55 : entre (DVDC, ODBCDN, VBBB, VBSC, VBWC)
54 : dargenton (DVDC, ODBCDN, VB2H, VBBB, VBLck, VBSC, VBWC)
53 : votant (DVDC)
53 : règles (VBBB, VBSC, VBWC)
...
Il faut choisir un code mnémotechnique facile à retenir, si on ne précise rien, on utilise par défaut Doc n°1, Doc n°2..., ou rien s'il n'y a qu'un seul document. Ces codes sont stockés dans un fichier ini (simple fichier texte) pour faciliter l'étiquetage.

Source / Exemple :


Cf. Zip.

Conclusion :


J'ai développé ce code en un week-end !... mais je le peaufine depuis plus de 4 ans ! je me suis enfin décider à le publier ; la version DotNet possède quelques fonctionnalités en plus et sa présentation des résultats est plus pertinente, cependant j'ai fait attention à ce que l'index soit compatible entre les versions.

Autre bonus : il y a une version Excel ainsi qu'une version Word : les utilisateurs du VBA Excel ou Word sont encore plus nombreux que ceux de VB ! ces deux versions sont bien la preuve que l'environnement VBA est un environnement de développement complet en Visual Basic, il n'y a guère que la compilation optimisée qui manque. Vous pouvez constater que le code source est strictement identique à 100% à celui de VB6, j'ai juste utilisé la compilation conditionnelle pour switcher l'initialisation du code entre les différentes versions. En fait, seuls les contrôles de l'interface ne peuvent pas être copiés/collés entre VB6 et VBA Word ou Excel, mais cela fonctionne entre Word et Excel. Les contrôles ne sont pas identiques, mais tout est compatible en faisant attention à deux ou trois subtilités.

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.