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
| Private Sub TextBoxproduitcherche_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim cel As Range, ERREUR As Integer
Application.ScreenUpdating = False 'retire l'actualisation de l'ecran
With Sheets("references") 'feuille ou se trouve les données
If .AutoFilterMode Then 'regarde si le filtre automatique est activé
.AutoFilterMode = False 'si oui le retire
End If
ERREUR = .Range("b2").End(xlDown).Offset(0, 0).Row 'variable de verification
.Range("b2").AutoFilter 'filtre sur la col de recherche
.Range("b2").AutoFilter Field:=2, Criteria1:="*" & TextBoxproduitcherche & "*" 'texte entré ds textbox
Set plage = .Range("b2", .Range("b2").End(xlDown)) 'nom de la plage de recherche
Set plage = plage.Cells.SpecialCells(xlCellTypeVisible)
If plage.Count > ERREUR Then
If .AutoFilterMode Then
.AutoFilterMode = False
MsgBox "AUCUN CRITERE NE CORRESPOND A LA RECHERCHE" 'message si pas de données
Exit Sub
End If
End If
With REFCHOISIE 'nom de la listbox ou combobox
.Clear 'on vide le contenu
For Each cel In plage 'et on la remplit
.AddItem cel(1, 0) 'ajout ds combox le nom cherché
.Column(1, .ListCount - 1) = cel(1, 1) 'col choisie sur la meme ligne
.Column(2, .ListCount - 1) = VBA.Format(cel(1, 2), "#,##0.00 ") 'col choisie sur la meme ligne
.Column(3, .ListCount - 1) = VBA.Format(cel(1, 3), "#0.00 %") 'col choisie sur la meme ligne
.Column(4, .ListCount - 1) = cel(1, 5) 'col choisie sur la meme ligne
.Column(5, .ListCount - 1) = VBA.Format(cel(1, 6), "#0.00") 'col choisie sur la meme ligne
.Column(6, .ListCount - 1) = VBA.Format(cel(1, 8), "# ##0.00 ") 'col choisie sur la meme ligne
.Column(7, .ListCount - 1) = VBA.Format(cel(1, 9), "##0") 'col choisie sur la meme ligne
.BoundColumn = 1
Next cel
End With
Selection.AutoFilter
.Select
If .AutoFilterMode Then
.AutoFilterMode = False 'retire le filtre automatique
End If
End With
Application.ScreenUpdating = True 'actualisation de l'écran
End Sub |
Partager