Problème de formulaire de recherche
Bonjour,
je voulais créer un formulaire pour établir des recherches de documents par mots clés!
- un tableau qui s'est dessiné tout seul que je sais pas vraiment d'où vient ( au niveau de la colonne C et D )
- quand j'effectue une recherche, je tape la 1er lettre et les résultats apparaissent dans " affichage du filtre " mais quand j'ajoute la 2eme lettre , les résultats s'effacent directement !!
- quand je fais une recherche et la case souhaité se met en couleur , je sais pas quand ça s’enlève , car même si j'effectue une autre recherche , l'ancienne reste coloré .
PS: je voulais rejoindre le fichier mais ils disent qu'il est volumineux , comment je fais pour réduire sa taille?
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Or TypeName(ctl) = "Listbox" Then
ctl.Value = ""
End If
Next ctl
End Sub
Private Sub Listdoc_Click()
Me.TextBox3.Value = Me.Listdoc.Value
End Sub
Private Sub TextBox1_Change()
Dim i As Integer
Dim NbLigne As Integer
Dim NomDocRecherche As String
'On ilitialise à 0 la liste de résultat
Me.Listdoc.Clear
Worksheets("Doc techniques").Range("C10:C100000").Interior.ColorIndex = 0
'On met une couleur de fond blanche sur la plage
Range("C10:C100000").Interior.ColorIndex = 0
Range("C10:C100000").Font.ColorIndex = 0
Range("C10:C100000").Font.Bold = False
'On définit une var pour comptabiliser le nbre de ligne dans la liste
NbLigne = Worksheets("Doc techniques").Range("C100000").End(xlUp).Row
NomDocRecherche = Me.TextBox1.Value
'On teste que la zone de saisie ne soit pas vide
If Me.TextBox1 <> "" Then
'parcourir la liste
For i = 10 To NbLigne
If Worksheets("Doc techniques").Cells(i, 3) Like "*" & UCase(Me.TextBox1.Value) & "*" Then
'Si une val est trouvé , on applique une couleur au fond
Cells(i, 3).Interior.Color = RGB(255, 255, 0)
Cells(i, 3).Font.Color = RGB(0, 0, 0)
Cells(i, 3).Font.Bold = True
'Compléte la listbox
Me.Listdoc.AddItem Worksheets("Doc techniques").Cells(i, 3)
End If
Next i
End If
End Sub
Private Sub TextBox2_Change()
Dim j As Integer
Dim NbMax As Integer
Dim redacteurCherchee As String
'On réinitialise la listbox
Me.Listdoc.Clear
Worksheets("Doc techniques").Range("D10:D100000").Interior.ColorIndex = 0
'Déclarer la fin de la liste
NbMax = Worksheets("Doc techniques").Range("D100000").End(xlUp).Row
'Récupérer les données dans le textbox
redacteurCherchee = Me.TextBox2.Value
'Test textbox qu'il n'est pas vide avant de faire mlla recherche
If Me.TextBox2 <> "" Then
'Parcourir toute la liste de recherche
For j = 10 To NbMax
'Test du contenu de la cellule
'Grace au caractére de remplacement *
If Worksheets("Doc techniques").Cells(j, 4) Like "*" & UCase(Me.TextBox2) & "*" Then
Cells(j, 4).Interior.Color = RGB(255, 255, 0)
'On compléte la listbox des valeurs
Me.Listdoc.AddItem Worksheets("Doc techniques").Cells(j, 4)
End If
Next j
End If
End SubMerci énormément
Bonjour,
d'après ce que j'ai pu voir de l'ancien fichier :
Pour le User formde "recherche" :
- les évènements se déclanchent avec des Textbox. _ change. ( donc après saisie de la première lettre
l'évènement se déclanche alors qu'il peut y avoir plusieurs lettres à saisir. )
- un "After update" serait un peut mieux mais pas forcément la meilleur solution.
Pour l'évenement déclencheur de la recherche j'ajouterai un bouton " Lancer la recherche" dans le userform
et je déplacerai tous les codes recherche dans l'évènement de ce bouton.
Pour la couleur qui reste je n'ai pas vu d'évènement pour réinitialiser les couleurs d'origine.
Code à créer mais lors de quel évenement ?
- ouverture du userform recherche ?
- Nouveau bouton sur la page ?
- Bouton "lancer recherche" cité précédemment ?