Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Recherche Userform d'un nombre au format texte

Thomasky

XLDnaute Nouveau
Bonjour à tous, étant débutant en vba je me suis lancé dans la création d'un formulaire (userform) de gestion des stocks, j'ai encore des améliorations à apporter à mon classeur mais je rencontre un problème :
Le Userform peut rechercher les matières avec différentes épaisseurs et dimensions via les listes déroulantes, et la recherche se fait dans la feuille "Source" qui liste toutes les données de la feuille "Stocks".
Le résultat apparaît alors dans la listbox du formulaire, le souci est que lorsqu'on rentre une épaisseur pour lancer la recherche, plus aucun résultat n'est trouvé comme si aucune épaisseur ne correspond, sauf lorsque l'épaisseur est de type fraction (3/4, 4/6, 6/8, 8/10, etc.).
Je soupçonne un problème de format entre la liste déroulante et mes résultats, j'ai donc essayé de tout mettre au format texte puis standard mais rien n'y fait.

Le code ci-dessous est celui utilisé pour la recherche et je pense qu'il est bon.

ligne_source = 2
While (Sheets("Source").Cells(ligne_source, 1).Value <> "")
If Sheets("Source").Cells(Rows.Count, 1).End(xlUp).Row = 1 Then
DerniereLigne = 2
Else
DerniereLigne = Sheets("Source").Cells(Rows.Count, 1).End(xlUp).Row
End If
If CritereMat <> "" And CritereEp = "" And CritereDim = "" Then
liste.Clear
For x = 1 To DerniereLigne
If Sheets("Source").Cells(x, 1) = CritereMat Then
Me.liste.AddItem Sheets("Source").Cells(x, 1)
Me.liste.List(Me.liste.ListCount - 1, 1) = Sheets("Source").Cells(x, 2)
Me.liste.List(Me.liste.ListCount - 1, 2) = Sheets("Source").Cells(x, 3)
Me.liste.List(Me.liste.ListCount - 1, 3) = Sheets("Source").Cells(x, 4)
Me.liste.List(Me.liste.ListCount - 1, 4) = Sheets("Source").Cells(x, 5)
End If
Next x

ElseIf CritereMat <> "" And CritereEp <> "" And CritereDim = "" Then
liste.Clear
For x = 1 To DerniereLigne
If Sheets("Source").Cells(x, 1) = CritereMat And Sheets("Source").Cells(x, 2) = CritereEp Then
Me.liste.AddItem Sheets("Source").Cells(x, 1)
Me.liste.List(Me.liste.ListCount - 1, 1) = Sheets("Source").Cells(x, 2)
Me.liste.List(Me.liste.ListCount - 1, 2) = Sheets("Source").Cells(x, 3)
Me.liste.List(Me.liste.ListCount - 1, 3) = Sheets("Source").Cells(x, 4)
Me.liste.List(Me.liste.ListCount - 1, 4) = Sheets("Source").Cells(x, 5)
End If
Next x

ElseIf CritereMat <> "" And CritereEp <> "" And CritereDim <> "" Then
liste.Clear
For x = 1 To DerniereLigne
If Sheets("Source").Cells(x, 1) = CritereMat And Sheets("Source").Cells(x, 2) = 2 And Sheets("Source").Cells(x, 3) = CritereDim Then
Me.liste.AddItem Sheets("Source").Cells(x, 1)
Me.liste.List(Me.liste.ListCount - 1, 1) = Sheets("Source").Cells(x, 2)
Me.liste.List(Me.liste.ListCount - 1, 2) = Sheets("Source").Cells(x, 3)
Me.liste.List(Me.liste.ListCount - 1, 3) = Sheets("Source").Cells(x, 4)
Me.liste.List(Me.liste.ListCount - 1, 4) = Sheets("Source").Cells(x, 5)
End If
Next x

End If

ligne_source = ligne_source + 1
Wend

Merci d'avance pour vos réponse, je met mon fichier en pièce jointe.
Si vous avez des pistes d'améliorations ou des conseils pour mon fichiers n'hésitez pas à venir m'en parler.
 

Pièces jointes

  • Stocks.xlsm
    199.7 KB · Affichages: 11
Dernière édition:

Discussions similaires

Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…