1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| Option Explicit
Option Compare Text
Private Sub Bouton_rechercher_Click()
Dim cellule As Range
Feuil1.Activate
'recherche à partir du numéro de marché
If (TextBox_num_marche.Value <> "") Then
For Each cellule In Range("A1", Cells(Rows.Count, "A").End(xlUp))
With cellule.Offset(1, 0)
.EntireRow.Hidden = .Value <> CStr(TextBox_num_marche.Value)
End With
Next
End If
'recherche à partir du titulaire du marché
If (TextBox_titulaire_marche.Value <> "") Then
For Each cellule In Range("G1", Cells(Rows.Count, "G").End(xlUp))
With cellule.Offset(1, 0)
.EntireRow.Hidden = .Value <> CStr(TextBox_titulaire_marche.Value)
End With
Next
End If
'recherche en fonction d'une fourchette de prix
If ((TextBox_prix_min.Value <> "") And (TextBox_prix_max.Value <> "")) Then
For Each cellule In Range("M1", Cells(Rows.Count, "M").End(xlUp))
If Not IsEmpty(cellule) Then
With cellule.Offset(1, 0)
.EntireRow.Hidden = (.Value) <= CLng(TextBox_prix_min.Value) Or (.Value) >= CLng(TextBox_prix_max.Value)
End With
End If
Next
End If
'recherche en fonction du type de maché
If (TextBox_type_marche.Value <> "") Then
For Each cellule In Range("B1", Cells(Rows.Count, "B").End(xlUp))
If Not IsEmpty(cellule) Then
With cellule.Offset(1, 0)
.EntireRow.Hidden = (.Value) <= CStr(TextBox_type_marche.Value)
End With
End If
Next
End If
'Fermeture fenetre de recherche
'Unload UserForm_rechercher
End Sub
Private Sub TextBox_prix_max_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Seule une valeur numérique peut être entrée
If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
If Len(TextBox_prix_max) = 1 And TextBox_prix_max = "." Then TextBox_prix_max = "0."
'Si un point est déjà dans la chaine on ne peut pas en taper un autre
If InStr(TextBox_prix_max.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
'S'il existe un point dans le TextBox : InStr(TextBox_prix_max.Value, ".") <> 0
'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_max.Value)
'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_max.Value, ".") + 1
'alors on annule la saisie : Then KeyAscii = 0
If InStr(TextBox_prix_max.Value, ".") <> 0 And Len(TextBox_prix_max.Value) > InStr(TextBox_prix_max.Value, ".") + 1 Then KeyAscii = 0
End Sub
Private Sub TextBox_prix_min_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'Seule une valeur numérique peut être entrée
If InStr("0123456789.", Chr(KeyAscii)) = 0 Then KeyAscii = 0
'Si le caractère saisi est le 1er et qu'il s'agit d'un point alors j'ajoute 0 devant
If Len(TextBox_prix_min) = 1 And TextBox_prix_min = "." Then TextBox_prix_min = "0."
'Si un point est déjà dans la chaine on ne peut pas en taper un autre
If InStr(TextBox_prix_min.Value, ".") <> 0 And Chr(KeyAscii) = "." Then KeyAscii = 0
'S'il existe un point dans le TextBox : InStr(TextBox_prix_min.Value, ".") <> 0
'et que la longueur de la chaine contenue dans le textbox : Len(TextBox_prix_min.Value)
'est supérieure à la place du . dans la chaine + 1 > InStr(TextBox_prix_min.Value, ".") + 1
'alors on annule la saisie : Then KeyAscii = 0
If InStr(TextBox_prix_min.Value, ".") <> 0 And Len(TextBox_prix_min.Value) > InStr(TextBox_prix_min.Value, ".") + 1 Then KeyAscii = 0
End Sub |
Partager