Recherche via Inputbox + ListBox + fonciton Like

Résolu/Fermé
J.Wut - 2 oct. 2018 à 15:11
yg_be Messages postés 23429 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 janvier 2025 - 2 oct. 2018 à 17:53
Bonjour à vous tous,

J'ai besoin d'un conseil concernant une tentative de code approximative.

Tout d'abord, j'ai un UserForm qui contient une ListBox du nom de "List_Equipment".
A l'activation de l'UserForm une InputBox stockée dans la variable "equipment" demande à l'utilisateur quel équipement ce dernier souhaite chercher dans le fichier Excel d'environ 65/70 lignes.

Le but est donc que s'affiche dans la liste le contenu de toutes les cellules qui possèdent l'expression utilisée dans l'inputbox et non son contenu EXACT, d'où l'utilisation de la fonction Like.

J'ai fait le test avec le code suivant :

Dim equipment As String
Dim ligne_nom As Integer
Dim ligne_liste As Integer
Dim ligne_nombre As Integer

List_Equipment.ColumnCount = 3

equipment = InputBox("Equipment", "Title")

For ligne_nombre = 3 To 70

If Sheets("Oxygen").Cells(ligne_nombre, 1).Value Like equipment Then
ligne_nom = Sheets("Oxygen").Cells(ligne_nombre, 1).Row

List_Equipment.AddItem
ligne_liste = List_Equipment.ListCount - 1
List_Equipment.List(ligne_liste, 0) = Sheets("Oxygen").Cells(ligne_nom, 1).Value
List_Equipment.List(ligne_liste, 1) = Sheets("Oxygen").Cells(ligne_nom, 2).Value
List_Equipment.List(ligne_liste, 2) = Sheets("Oxygen").Cells(ligne_nom, 3).Value

End If
Next


Le test est en parti fonctionnel. Si j'indique le contenu exact d'une cellule, ce contenu est retranscris dans la liste. Toutefois, j'ai utilisé la fonciton LIKE justement pour que l'utilisateur n'ait pas à écrire le contenu exact. Et là HIC !

Dans mon fichier excel je vais avoir des distinctions de produits "Crew Mask" "Mask Assembly" "Cradle Assembly" "Oxygen Cylinder" etc. L'idée c'est que si mon utilisateur cherche un "Mask" il n'est pas à se taper les 70 lignes, mais seulement la dizaine qui contient l'expression "Mask" et l'utilisateur en question ne connaît pas forcèment le nom entier de ce qu'il cherche !

Pouvez-vous me venir en aide très chers internautes ?

Merci beaucoup à vous !
A voir également:

1 réponse

yg_be Messages postés 23429 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 janvier 2025 Ambassadeur 1 559
2 oct. 2018 à 15:42
bonjour, peut-être ainsi:
Like "*" & equipment & "*"
?
1
Bonjour,

en effet ça fonctionne tout de suite beaucoup mieux. Je ne connaissais pas cette subtilité. Merci pour ta réactivité, cela m'aide réellement beaucoup !
0
yg_be Messages postés 23429 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 janvier 2025 1 559 > J.Wut
2 oct. 2018 à 17:53
"Like" n'a d'utilité que si on utilise des jokers tels que "*" pour indiquer "n'importe quoi de n'importe quelle longueur" ou "?" pour "n'importe quel caractère".
"*Mask*" signifiera "tout ce qui contient "Mask".
"Mask*" tout ce qui commence par "Mask", ...

Sans Joker, like est équivalent à =.
0