Je travail actuellement sur un formulaire de recherche permettant de rechercher des documents dans une base de donnée de plusieurs milliers de lignes. Pour cela 3 champs sont à renseigner : Disciplines, Bloc, mots clefs. Chacun des 3 champs peut être renseignés individuellement ou compilés avec un autre ou les deux autres!
Je parviens à faire ce travail pour 2 des champs (disciplines et mot clefs) mais je bloque sur le 3ème (bloc). Je vous joins un fichier avec une partie de la base de données en exemple.
Autre point qui me perturbe, je n'arrive pas à intégrer la recherche par mot clefs en ignorant les accents (Cf. Code)
Une solution avec programme générique.
Il n'y a pas de menu déroulant. On frappe un ou plusieurs mots clés et on obtient la sélection dans un ListBox.
La gestion des accents peut être ajoutée.
Il n'y a vraiment pas de possibilité d'ajouter un combobox2 pour faciliter la recherche ? pour faire une sorte de filtre de recherche multicritère dynamique. Les points d'entrée pour la recherche dans la base de données étant la discipline (environ 50) ET/OU le bloc (5 choix) puis un mot clef pour affiner la recherche.... ou un mot clef pour trouver l'ensemble des documents de tous les blocs.
Merci Boisgontier,
C'est parfait !
J'avais initialement une Listview et avec la listbox je ne parviens pas à adapter le bout de code qui me permettait d'accéder au document via un lien hypertexte directement depuis la listview (la listbox maintenant) j'ai systématiquement une erreur de compilation (Cf. code ci dessous).
Autre chose, j'ai adapté ton code en fonction de mes besoins, notamment l'affichage des colonnes et en parcourant ton code, je ne vois pas à quel endroit il est possible d’adapter la largeur des colonnes de la listbox
Code:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim L&
E = CInt(ListBox1.SelectedItem)
If Range("F" & E + 1).Hyperlinks.Count = 0 Then
MsgBox "il n'y a pas de lien hypertexte dans la cellule " & Range("F" & E + 1).Address
Else
Range("F" & E + 1).Hyperlinks(1).Follow NewWindow:=True
End If
End Sub
-La largeur des colonnes de la ListBox se fait par rapport aux largeurs de colonnes de la BD (calculées dans EneteListBox). Elle peut être forcée par
'Me.ListBox1.ColumnWidths = "30;30;30;80;30;30;30;30;40"
-Les colonnes de combobox et les colonnes à visualiser se définissent par:
VB:
ColCombo = Array(2, 9) ' A adapter (1 à 8 colonnes maxi)
ColVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) ' A adapter
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Set result = f.[A:A].Find(what:=Me.ListBox1)
If Not result Is Nothing Then
ligne = result.Row
If f.Range("E" & ligne).Hyperlinks.Count = 0 Then
MsgBox "il n'y a pas de lien hypertexte dans la cellule " & Range("E" & ligne).Address
Else
f.Range("E" & ligne).Hyperlinks(1).Follow NewWindow:=True
End If
End If
End Sub
Merci Boisgontier,
Avec le dernier code pour les liens hypertexte, j'ai systématiquement une "erreur d'exécution '-2147221014 (800401ea)' : impossible d'ouvrir le fichier" sur la ligne "f.Range("F" & ligne).Hyperlinks(1).Follow NewWindow:=True' .... mais juste sur les 2 premières lignes de la listbox et seulement sur la liste complète (sans avoir renseigné les combobox et le textbox), mes liens hypertexte sont fonctionnelles bien depuis la feuille de classeur ?!? j'ai même testé en inversant l'ordre de la liste et les 2 premières lignes (qui étaient les dernière initialement) bug également....
Avez-vous une idée géniale pour me sortir de ce mauvais pas ?
J'ai repris le fichier d'origine (avec la colonne cachée D).
En phase de test, vous pouvez essayer:
VB:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Set result = f.[A:A].Find(what:=Me.ListBox1)
If Not result Is Nothing Then
ligne = result.Row
If f.Range("F" & ligne).Hyperlinks.Count = 0 Then
MsgBox "il n'y a pas de lien hypertexte dans la cellule " & Range("F" & ligne).Address
Else
MsgBox f.Range("F" & ligne).Hyperlinks(1).Address
f.Range("F" & ligne).Hyperlinks(1).Follow NewWindow:=True
End If
End If
End Sub
Boisgontier,
Avec ce nouveau code, le problème des 2 première ligne annoncé dans mon précédent post a disparu ! Cependant contrairement au fichier "essai" que vous m'avez transmis, de mon côté, si il n'y a pas de lien hypertexte en colonne F (donc colonne D vide) j'ai la même erreur d'exécution en débogage... je n'ai pas le msBox "il n'y a pas de lien hypertexte dans la cellule "