IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtre dans une listview


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut Filtre dans une listview
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    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




    BASE EMPLOI - DEMO.xls

  2. #2
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    J'ai trouvé ce code

    issue du fichier joint
    ComboListBox12.xls

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
      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 : Sélectionner tout - Visualiser dans une fenêtre à part
      Me.REFERANTS.List = bd.Value
    erreur de compilation : membre de méthode ou de données introuvable.


    qui à une idée ?

    Bonne nuit


    Seb

  3. #3
    Membre éclairé Avatar de GADENSEB
    Homme Profil pro
    Responsable Administratif et Financier
    Inscrit en
    Mars 2014
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable Administratif et Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2014
    Messages : 569
    Par défaut
    Je fais tout de même une explication sur mon fichier:

    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.




    bonne journée

    Seb

Discussions similaires

  1. Problème de filtre dans une ListView
    Par Thrud dans le forum Windows Presentation Foundation
    Réponses: 7
    Dernier message: 30/04/2008, 16h10
  2. [c#]Suppresion dans une listview
    Par onouiri dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/04/2005, 13h00
  3. Afficher un Hint dans une ListView
    Par Larion dans le forum C++Builder
    Réponses: 13
    Dernier message: 13/03/2005, 13h45
  4. [VB.NET] Objet .Tag dans une ListView
    Par Lois dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/10/2004, 16h35
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo