Bonjour,
Je me suis lancé il y a quelque temps dans un système de recherche avec une liste multi-critère.
J'ai réussi à obtenir un résultat satisfaisant, mais il reste quelques problèmes que j'ai essayé de résoudre seul, en vain.
Mon formulaire de recherche rassemble 4 critères:
- 2 ComboBox avec divers champs ne proposant pas de problème,
- 1 TextBox qui recherche actuellement des partie de mot,
Exemple : Dossier à rechercher = Bananes à Gogo
Pour l'instant, je peux chercher avec les mots clés suivants : Banan* ou *Gogo* ou *à*.
- 1 ComboBox qui détermine l'onglet dans lequel la recherche doit s'effectuer.
Etant donné que mon fichier est confidentiel, je vous insère mon code pour illustrer celà :
(Image de mon formulaire en annexe)
Voici mes 2 problèmes :
La TextBox de mon formulaire ne recherche que les parties de nom écritent en respectant la casse, et une * est indispensable pour rechercher une partie de mot se trouvant au milieu du nom du dossier.
J'ai essayé de modifier celà, mais je n'ai pas trouvé comment faire .
2ème problème, ma ComboBox permettant de séléctionner l'onglet par rapport au mois me convient, mais j'aimerai y ajouter un système permettant de rechercher dans l'intégralité des 12 onglets en même temps, quand on ne connais pas la période.
Voilà, je ne sais pas si c'est possible, mais en tout cas, moi, je déclare forfais !
(A savoir, je ne suis que débutant en VBA et je pompe, modifie, complète des boûts de codes recherchés sur Internet. Mes codes sont assurément beaucoup plus compliqué que ce qui est possible de faire.)
Je me suis lancé il y a quelque temps dans un système de recherche avec une liste multi-critère.
J'ai réussi à obtenir un résultat satisfaisant, mais il reste quelques problèmes que j'ai essayé de résoudre seul, en vain.
Mon formulaire de recherche rassemble 4 critères:
- 2 ComboBox avec divers champs ne proposant pas de problème,
- 1 TextBox qui recherche actuellement des partie de mot,
Exemple : Dossier à rechercher = Bananes à Gogo
Pour l'instant, je peux chercher avec les mots clés suivants : Banan* ou *Gogo* ou *à*.
- 1 ComboBox qui détermine l'onglet dans lequel la recherche doit s'effectuer.
Etant donné que mon fichier est confidentiel, je vous insère mon code pour illustrer celà :
Code:
Private Sub Effacer_Click()
Selection_mois = ""
selection_conseiller = ""
selection_affaire = ""
TextBox1 = ""
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub UserForm_Initialize()
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim i As String
Dim j As String
Dim k As String
Dim l As String
Dim m As String
Dim n As String
Dim o As String
Dim p As String
Dim q As String
Dim r As String
a = "Janvier 2011"
b = "Février 2011"
c = "Mars 2011"
d = "Avril 2011"
e = "Mai 2011"
f = "Juin 2011"
g = "Juillet 2011"
h = "Août 2011"
i = "Septembre 2011"
j = "Octobre 2011"
k = "Novembre 2011"
l = "Décembre 2011"
m = "tuj"
n = "vup"
o = "som"
p = "échéancier"
q = "en suspens"
r = "bai"
Selection_mois.AddItem a
Selection_mois.AddItem b
Selection_mois.AddItem c
Selection_mois.AddItem d
Selection_mois.AddItem e
Selection_mois.AddItem f
Selection_mois.AddItem g
Selection_mois.AddItem h
Selection_mois.AddItem i
Selection_mois.AddItem j
Selection_mois.AddItem k
Selection_mois.AddItem l
selection_conseiller.AddItem m
selection_conseiller.AddItem n
selection_conseiller.AddItem o
selection_affaire.AddItem p
selection_affaire.AddItem q
selection_conseiller.AddItem r
End Sub
Private Sub Rechercher_Click()
Dim lgLigDeb As Long
Dim NbColonnes As Long
Dim lgColDeb As Long
Dim Conseiller As String
Dim Affaire As String
Dim Nom_affaire As String
Conseiller = "*"
If selection_conseiller.Value <> "" Then Conseiller = selection_conseiller.Value
Affaire = "*"
If selection_affaire.Value <> "" Then Affaire = selection_affaire.Value
Nom_affaire = "*"
If TextBox1.Value <> "" Then Nom_affaire = TextBox1.Value
ListBox1.Clear
' Nombre de colonnes à charger
NbColonnes = 5
ListBox1.ColumnCount = 5
' Largeur des colonnes
ListBox1.ColumnWidths = "50;50;30;200;200"
' Boucle de la 2ème à la dernière ligne de la feuille Feuil1
If Selection_mois = "" Then Selection_mois = "Janvier 2011"
Sheets(Selection_mois.Value).Select
For lgLigDeb = 3 To Range("B" & Cells.Rows.Count).End(xlUp).Row
If Range("C" & lgLigDeb).Value Like Conseiller And Range("B" & lgLigDeb).Value Like Affaire And Range("D" & lgLigDeb).Value Like Nom_affaire Then
With ListBox1
.AddItem Range("A" & lgLigDeb).Value
For lgColDeb = 2 To NbColonnes
If lgColDeb = NbColonnes Then
.List(.ListCount - 1, lgColDeb - 1) = Cells(lgLigDeb, lgColDeb).Value
Else
.List(.ListCount - 1, lgColDeb - 1) = Cells(lgLigDeb, lgColDeb).Value
End If
Next lgColDeb
End With
End If
Next lgLigDeb
End Sub
Private Sub CommandButton2_Click()
Formulaire1.Hide
End Sub
(Image de mon formulaire en annexe)
Voici mes 2 problèmes :
La TextBox de mon formulaire ne recherche que les parties de nom écritent en respectant la casse, et une * est indispensable pour rechercher une partie de mot se trouvant au milieu du nom du dossier.
J'ai essayé de modifier celà, mais je n'ai pas trouvé comment faire .
2ème problème, ma ComboBox permettant de séléctionner l'onglet par rapport au mois me convient, mais j'aimerai y ajouter un système permettant de rechercher dans l'intégralité des 12 onglets en même temps, quand on ne connais pas la période.
Voilà, je ne sais pas si c'est possible, mais en tout cas, moi, je déclare forfais !
(A savoir, je ne suis que débutant en VBA et je pompe, modifie, complète des boûts de codes recherchés sur Internet. Mes codes sont assurément beaucoup plus compliqué que ce qui est possible de faire.)