Filtre dans une listview

GADENSEB

XLDnaute Impliqué
Bonsoir
Dans l'usf GESTIONPOSTE j'ai une listview que je souhaiterais filtrer avec le textbox "SOCIETE"
se trouvant dans la colonne C

Comment procéder ?

Bonne soirée

Seb

Code:
 Private Sub UserForm_Initialize()
Set F = Sheets("BASE EMPLOI")
With Me.REFERANTS
 
Entetes = Array("b", "C", "G", "H", "I", "J", "K", "L")
largeur = Array(80, 80, 80, 80, 70, 70, 70, 80)
    With .ColumnHeaders
        .Clear
        nbr = -1
        For nbr = 0 To 7
           .Add , , F.Cells(1, Entetes(nbr)), largeur(nbr) '80
        Next
 
    End With
    .View = 3                   ' type Report
    .Gridlines = True           ' affichage de lignes
    .FullRowSelect = True       ' sélection complète de la ligne
    .HideColumnHeaders = False  ' afficher les en-têtes de colonnes
    .LabelEdit = 0              ' Autoriser la saisie
    '.LabelEdit = 1             ' N'autoriser la saisie
 
End With
Call LISTING
 
end sub

Code:
Sub LISTING()
  
 'Remplit la Listview avec les données d'Excel

REFERANTS.ListItems.Clear
 
Set F = Sheets("BASE EMPLOI")
 
Entetes = Array("b", "C", "G", "H", "I", "J", "K", "L")
 
   Set plage = F.Range("b2:b" & F.Range("b65000").End(xlUp).Row)
    For Each cel In plage
        With REFERANTS
 
            .ListItems.Add , , cel
 
            For nbr = 1 To 7
 
            .ListItems(.ListItems.Count).ListSubItems.Add , , F.Cells(cel.Row, Entetes(nbr))  'Cel.Offset(0, 1)
 
            Next
 
        End With
    Next
 
End Sub
 

Pièces jointes

  • BASE EMPLOI - DEMO.xlsm
    221.7 KB · Affichages: 82
  • BASE EMPLOI - DEMO.xlsm
    221.7 KB · Affichages: 69
  • BASE EMPLOI - DEMO.xlsm
    221.7 KB · Affichages: 119

GADENSEB

XLDnaute Impliqué
Re : Filtre dans une listview

J'ai trouvé ce code

issue du fichier joint

Code:
Dim bd, f
Private Sub UserForm_Initialize()
  Set f = Sheets("BD")
  Set d = CreateObject("Scripting.Dictionary")
  Set bd = f.Range("A2:M" & f.[M65000].End(xlUp).Row)
  For i = 1 To bd.Rows.Count
    If bd.Cells(i, 1) <> "" Then d(bd.Cells(i, 1).Value) = ""
  Next i
  temp = d.keys
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox1.List = temp
  Me.ListBox1.List = bd.Value
  For k = 1 To 13: Me("label" & k).Caption = f.Cells(1, k): Next k
End Sub

Private Sub ComboBox1_Click()
   Dim a()
   n = Application.CountIf(Application.Index(bd, , 1), Me.ComboBox1)
   ReDim a(1 To n, 1 To bd.Columns.Count)
    ligne = 0
   For i = 1 To bd.Rows.Count
     If bd.Cells(i, 1) = Me.ComboBox1 Then
       ligne = ligne + 1
       For k = 1 To bd.Columns.Count: a(ligne, k) = bd.Cells(i, k): Next k
      End If
   Next i
   Me.ListBox1.List = a()
End Sub

Sub Tri(a, gauc, droi) ' Quick sort
  ref = a((gauc + droi) \ 2)
  g = gauc: d = droi
  Do
     Do While a(g) < ref: g = g + 1: Loop
     Do While ref < a(d): d = d - 1: Loop
     If g <= d Then
        temp = a(g): a(g) = a(d): a(d) = temp
        g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi)
   If gauc < d Then Call Tri(a, gauc, d)
End Sub

que j'ai adapté comme ca



Code:
  Set f = Sheets("BASE EMPLOI")
  Set d = CreateObject("Scripting.Dictionary")
  Set bd = f.Range("a2:m" & f.[m65000].End(xlUp).Row)
  For i = 1 To bd.Rows.Count
    If bd.Cells(i, 1) <> "" Then d(bd.Cells(i, 1).Value) = ""
  Next i
  temp = d.keys
  Call Trin2(temp, LBound(temp), UBound(temp))
  Me.ComboBox1.List = temp
  Me.REFERANTS.List = bd.Value
  For k = 1 To 10000: Me("label" & k).Caption = f.Cells(1, k): Next k
  End Sub
  
  
 Private Sub ComboBox1_Click()
   Dim a()
   n = Application.CountIf(Application.Index(bd, , 3), Me.ComboBox1)
   ReDim a(1 To n, 1 To bd.Columns.Count)
    ligne = 0
   For i = 1 To bd.Rows.Count
     If bd.Cells(i, 1) = Me.ComboBox1 Then
       ligne = ligne + 1
       For k = 1 To bd.Columns.Count: a(ligne, k) = bd.Cells(i, k): Next k
      End If
   Next i
   Me.REFERANTS.List = a()
End Sub

Sub Trin2(a, gauc, droi) ' Quick sort
  Ref = a((gauc + droi) \ 2)
  G = gauc: d = droi
  Do
     Do While a(G) < Ref: G = G + 1: Loop
     Do While Ref < a(d): d = d - 1: Loop
     If G <= d Then
        temp = a(G): a(G) = a(d): a(d) = temp
        G = G + 1: d = d - 1
     End If
   Loop While G <= d
   If G < droi Then Call Trin2(a, G, droi)
   If gauc < d Then Call Trin2(a, gauc, d)
End Sub




mais j'ai une erreur à la ligne

Code:
  Me.REFERANTS.List = bd.Value

erreur de compilation : membre de méthode ou de données introuvable.


qui à une idée ?

Bonne nuit


Seb
 

Pièces jointes

  • ComboListBox12.xls
    63 KB · Affichages: 102
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Filtre dans une listview

Bonjour
Tu fais une demande pour une listview et tu donnes un code pour une listbox !!!!!!!
bonne nuit
Papou:eek:

PS: N'ayant jamais eu de réponse à tes demandes précédentes, sur un autre post, je ne vais pas me précipiter !!!
 
Dernière édition:

GADENSEB

XLDnaute Impliqué
Re : Filtre dans une listview

Hello
Quels posts je ne t'ais pas répondus ?
Désolé dans ce cas

J'ai pris l’exemple de du fichier joint qui passe par une listbox pour filtrer la listview, qui dans mon cas s'appelle REFERANTS.

Je joins mon fichier avec des modifs !


Bonne journée

Seb
 

Pièces jointes

  • BASE EMPLOI - DEMO.xlsm
    220.1 KB · Affichages: 96
  • BASE EMPLOI - DEMO.xlsm
    220.1 KB · Affichages: 72
  • BASE EMPLOI - DEMO.xlsm
    220.1 KB · Affichages: 74

Paritec

XLDnaute Barbatruc
Re : Filtre dans une listview

Bonjour le forum
si tu expliquais comment on se sert de ton fichier pour avoir le défaut ce serait plus simple car nous on ne connait pas ton fichier
en tout état de cause tu veux remplir une listview en utilisant la propriété .list et une listview ne peut pas être chargée avec .list !!!!!
a+
Papou:eek:
 

GADENSEB

XLDnaute Impliqué
Re : Filtre dans une listview

Mon fichier est une base de données pour gérer ma recherche d'emploi.

J'enregistre mes les annonces auquel j'ai répondu et je gére les relances dans mon google agenda en automatique

L'onglet GESTION sert de synthèse.

via la cellule C5 je génére un usf de saisie appelé BASEEMPLOI qui remplie la bdd dans l'onglet BASE EMPLOI.

Dans les lignes blanches A36 to I..... J'ai la synthèse des annonces à relancer.

En cliquant sur une de ces lignes, j'ai l'usf GESTIONPOSTE qui apparaît qui affiche toutes les données de la ligne concernée.

Ces données sont modifiables/supprimables dans l'usf GESTIONPOSTE.


J’espère avoir été clair ..... ;)

Là le problème posé est la listview que je souhaite faire apparaître dans l'usf GESTIONPOSTE.
Elle liste la bdd mais je veux la filtrer en fonction du textbox SOCIETE.



Qu'en penses-tu ?

bonne journée

Seb
 

Paritec

XLDnaute Barbatruc
Re : Filtre dans une listview

Re Gadenseb le forum
j'en pense que je vais aller voir ton fichier avec tes explications et je te redirai si j'ai compris
Mais en tout état de cause Listview.list = ma BD c'est impossible cela est une certitude
a+
Papou:eek:
 

Paritec

XLDnaute Barbatruc
Re : Filtre dans une listview

Re Gadenseb le forum
bon alors tes macros c'est pas le top un exemple ci-dessous

Code:
For k = 1 To 10000: Me("label" & k).Caption = f.Cells(1, k): Next k

Cela laisse supposer que tu as 10000 label dans ton userform???
a+
Papou:eek:
 

GADENSEB

XLDnaute Impliqué
Re : Filtre dans une listview

Sympa ! ;)

donc l'usf GESTION poste je souhaite que :
- la listview REFERANTS (sa place peut changer dans l'usf...) soit remplie avec les colonnes C D E G H I J K L de l'onglet "Base Emploi").

- La listview doit être filtrée en fonction de textbox "SOCIETE" (colonne C de l'onglet "Base Emploi").

- Je dois pouvoir modifier les données présentes dans la listview et que ces modif se reportent dans la bdd de l'onglet "Base Emploi")

.... pffffiouuu .... C'est déjà un bon début !
 

Paritec

XLDnaute Barbatruc
Re : Filtre dans une listview

Re Gadenseb le forum
bon alors plus j'avance plus j'ai peur !!!!
c'est quoi, ton histoire de remplir les colonnes une par une et après de les trier? en alpha???
si tu fais comme cela les lignes ne correspondent plus aux données par ligne?????
tu n'as pas remarqué cela?
a+
Papou:eek:
 

Discussions similaires

Réponses
1
Affichages
164
Réponses
2
Affichages
229

Statistiques des forums

Discussions
312 194
Messages
2 086 070
Membres
103 110
dernier inscrit
Privé