Userform avec filtre ou tri

tinet

XLDnaute Impliqué
Bonsoir à tous,

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

je souhaiterais apporter des améliorations sur mon Userform.

j'aurais besoin d'une clé de tri sur le fournisseur ce qui ne ferait apparaître que les produits qui lui sont attachés.
une fonction également en cochant les produits frais et qui ne ferait apparaître que les produits correspondants.
et dernière demande une correspondance des produits avec la ligne de prix.

il faut que à l'ouverture de mon Userform tous les filtres sont remis à zéro.

j'ai fait plusieurs tests mais je n'arrive pas à trouver la solution.

merci de votre aide:rolleyes:

a+
 

Pièces jointes

  • Nouveau fichier de recettes ver 77.zip
    19.6 KB · Affichages: 67
  • Nouveau fichier de recettes ver 77.zip
    19.6 KB · Affichages: 70
  • Nouveau fichier de recettes ver 77.zip
    19.6 KB · Affichages: 69
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : amélioration d'un Userform

Bonjour tinet,

Deux petits ajouts dans le
VB:
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
    '***
End Sub

et dans
VB:
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

Ce qui n'est pas clair, dans ce que tu souhaites: les effets des filtres doivent se cumuler, ou non? Exemple: tu veux pouvoir afficher les produits du fournisseur x, s'il s'agit de produits frais et que le nom du produit commence par un 'r'?

Attention: je n'ai pas dit que j'étais volontaire pour le faire, ni que je m'en sentais capable :eek:
 

tinet

XLDnaute Impliqué
Re : amélioration d'un Userform

Bonjour Modeste,

Merci pour ces modif, cela fonctionne bien.:eek:
Ce qui n'est pas clair, dans ce que tu souhaites: les effets des filtres doivent se cumuler, ou non? Exemple: tu veux pouvoir afficher les produits du fournisseur x, s'il s'agit de produits frais et que le nom du produit commence par un 'r'?

oui j'ai besoin de pouvoir filtrer le fournisseur et coché également si produits frais et produit qui commence par r.

a+
 

tinet

XLDnaute Impliqué
userform avec filtre

Re Modeste et le forum,

après plusieurs essais sa coince toujours.
pas de tri sur les choix

a+
 

Pièces jointes

  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 53
  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 58
  • Nouveau fichier de recettes ver 77.zip
    20 KB · Affichages: 55
Dernière édition:

tinet

XLDnaute Impliqué
Re : userform avec filtre

Bonsoir à tous,

Ou mon erreur, si je veux un tri par première lettre ou contient
plus par famille et par produit frais.
Enfin multi possibilité.
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
 

Discussions similaires

Réponses
43
Affichages
2 K

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom