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

userform avec plusieurs possibilité de filtre

tinet

XLDnaute Impliqué
Bonjour le forum,

Je cherche une solution pour excel 2003.
J'ai besoin d'aide sur un Userform en complement d'information.

j'ai créé un Userform, qui me permet de rechercher un produit par le mot première lettre ou contient ou fournisseur, mais séparer

je souhaiterais apporter des améliorations sur mon Userform.

j'aurais besoin de faire le tri avec les diférents choix.
faire une recherche avec première lettreou contient ,filtre avec fournisseur et même
produit frais mais en cumule
j'ai fait plusieurs tests mais je n'arrive pas à trouver la solution.

Voici mon code

PHP:
Private Sub ListBox2_Click() 'Lors de la sélection d'un fournisseur, afficher les produits
   ListBox1.Clear
    For Each f In [Liste].Offset(0, 8)
        If f.Value = ListBox2.Text Then ListBox1.AddItem f.Offset(0, -8)
    Next f
End Sub



Private Sub ListBox4_Click()
ListBox1.Clear
    For Each f In [Liste].Offset(0, 1)
        If f.Value = ListBox4.Text Then ListBox1.AddItem f.Offset(0, -1)
    Next f

End Sub



Private Sub RefEdit1_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer)

End Sub

Private Sub UserForm_Initialize()
    Me.ListBox1.List = [Liste].Value
    '*** Lister les fournisseurs sans doublons
   Set listef = CreateObject("scripting.dictionary")
    For Each c In [Liste].Offset(0, 8)
        If Not listef.exists(c.Value) Then listef(c.Value) = c.Value
    Next c
     
    ListBox2.List = listef.keys
    Set listef = CreateObject("scripting.dictionary")
    For Each c In [Liste].Offset(0, 1)
        If Not listef.exists(c.Value) Then listef(c.Value) = c.Value
    Next c
     
    ListBox4.List = listef.keys
    '***
End Sub
Private Sub TextBox1_Change()
   Me.ListBox1.Clear
   For Each c In [Liste]
     If UCase(c) Like UCase(Me.TextBox1) & "*" Then Me.ListBox1.AddItem c
  Next c
End Sub
Private Sub TextBox2_Change()
   Me.ListBox1.Clear
   For Each c In [Liste]
     If UCase(c) Like "*" & UCase(Me.TextBox2) & "*" Then Me.ListBox1.AddItem c
  Next c
End Sub
Private Sub ListBox1_Click()
  ActiveCell = Me.ListBox1
  Unload Me
End Sub


et mon fichier

a+
 

Pièces jointes

  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 73
  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 71
  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 70

Modeste

XLDnaute Barbatruc
Re : userform avec plusieurs possibilité de filtre

Bonsoir,

Je pense et/ou suppose avoir compris. Il est possible d'utiliser des colonnes dans une ListBox ... mais n'est-ce pas encore plus simple d'afficher le prix "à la suite" du nom du produit puis, lors de la validation, de "splitter" pour ne récupérer que le nom?
En tout cas, c'est plus simple à mettre en oeuvre (pour moi!)

Ne te reste qu'à dire ce que tu en penses, sauf si quelqu'un, passant par ici, faisait une autre proposition ...
 

Pièces jointes

  • Recettes tinet (2).zip
    24.3 KB · Affichages: 30
  • Recettes tinet (2).zip
    24.3 KB · Affichages: 31
  • Recettes tinet (2).zip
    24.3 KB · Affichages: 31

tinet

XLDnaute Impliqué
Re : userform avec plusieurs possibilité de filtre

Re,

Question.

Nous sommes sur un fichier test
Le nom des produits et plus long.
Possible d'aligné le produit à gauche et le tarif à droite pour une meilleur lecture dans l'userform, et de garder la décimale 3 chiffres après la virgule.

Voir l'exemple.

A+
 

Pièces jointes

  • Recettes tinet (2).zip
    23.1 KB · Affichages: 37
  • Recettes tinet (2).zip
    23.1 KB · Affichages: 36
  • Recettes tinet (2).zip
    23.1 KB · Affichages: 37

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…