Formulaire de recherche multicritère ET/OU

Tahititin

XLDnaute Occasionnel
Bonjour,

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)

Merci de votre aide
 

Pièces jointes

  • Liste des livrables - essai 2.xlsm
    257.7 KB · Affichages: 25

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

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.


Boisgontier
 

Pièces jointes

  • Copie de FormRechercheModifTDYN.xls
    1.6 MB · Affichages: 21
Dernière édition:

Tahititin

XLDnaute Occasionnel
Bonjour et merci Boisgontier,

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 de votre retour
 

Tahititin

XLDnaute Occasionnel
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

merci
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Version qui ne tient pas compte des accents.

-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


Boisgontier
 

Pièces jointes

  • FormFiltreListBox9ComboBoxsTextBox.xls
    497.5 KB · Affichages: 25
Dernière édition:

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Pour les hyperliens:

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("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

Boisgontier
 

Pièces jointes

  • FormFiltreListBox9ComboBoxsTextBox.xls
    419 KB · Affichages: 19
Dernière édition:

Tahititin

XLDnaute Occasionnel
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 ?

D'avance merci
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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
 

Pièces jointes

  • essai.xlsm
    229.5 KB · Affichages: 37
Dernière édition:

Tahititin

XLDnaute Occasionnel
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 "

Merci
 

Discussions similaires