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 :

Filtrer 4 listview dès initialisation de l'userfom [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable de Maintenance
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de Maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut Filtrer 4 listview dès initialisation de l'userfom
    Hello;

    J'ai reussi a creer quatres lisview mais je n'arrive pas a filtrer et trier par ordre decroissant celle ci des l'initilisation de l'userform.

    exemple:
    LISTVIEW1 : avec comme critere de filtre en A : i.....jours & en F : d + ordre decroissant de la colonne A
    LISTVIEW2 : avec comme critere de filtre en A : a.....jours & en F : d + ordre decroissant de la colonne A
    etc...

    Je ne souhaite pas recuperer de valeur je souhaite juste faire de l'affichage.

    Je vous remercie par avance de vos reponses si cela est bien sur possible
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je t'ai répondu dans le fil initial, avant de trouver celui-ci.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de Maintenance
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de Maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut
    je sais j'ai vu ; mais j'ai essayer ton code et j'arrive pas ( ce qui peut etre du a mes competences ) a effectuer une listview avec son propre filtre des l'initialisation.


    Alors pour les quatres en meme temps je te raconte pas l'histoire

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Je te mets en pièce jointe ton classeur modifié.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de Maintenance
    Inscrit en
    Juin 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de Maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 31
    Par défaut
    Je te remercie fortement; comme je disais cela venait de moi.
    J'ai encore beaucoup a apprendre.

    Petite dernier question:

    Pour effectuer des filtres differents sur les autres listview de l'userform, qu'est ce que je dois recopier?
    Je suis obliger depasser par une listbox puis vers une listview.
    Ou je peux faire directement le filtre sur la listview et enlever la listBox?

    ListView2.View = lvwReport ' cela sert a quoi cette ligne?'


    Et encore MERCI

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Non, tu filtres les données puis tu alimentes la listbox ou la listview directement. Je vais modifier le filtre pour la listview et je posterai le code commenté.

    Voici le code commenté :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    'initialisation de l'userform
    Private Sub UserForm_Initialize()
        Dim Plage As Range, c As Range
        'avec les données de Feuil1...
        'positionnement du premier filtre
        With Sheets("Feuil1")
            'détermination de la plage destinée à être filtrée
            Set Plage = .Range(.[A6], .Cells(.Rows.Count, 13).End(xlUp))
            'suppression des filtres automatiques
            .AutoFilterMode = False
            'filtre sur la colonne A des données commençant par "i"
            Plage.AutoFilter 1, "=i*"
            'filtre sur la colonne F des cellules égales à D
            Plage.AutoFilter 6, "D"
            'tri sur la colonne A
            With .AutoFilter.Sort
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End With
        'avec la listbox ListBox1
        With Me.ListBox1
     
            'décalage de la plage filtrée pour ne pas récupérer la ligne d'entêtes
            Set Plage = Sheets(1).AutoFilter.Range.Offset(1)
            'redimensionnement de la plage pour éliminer la ligne ajoutée par la commande "offset"
            'redimensionnement de la plage pour ne prendre que la colonne A
            Set Plage = Plage.Resize(Plage.Rows.Count - 1, 1)
            'sélection des cellules visibles
            Set Plage = Plage.SpecialCells(xlCellTypeVisible)
            If Plage.Count > 0 Then
            'pour chaque cellule de cette plage
                For Each c In Plage
                    'ajout du premier item de la ligne
                    .AddItem c.Value
                    'ajout du deuxième item
                    .List(.ListCount - 1, 1) = c.Offset(, 1).Value
                    'etc.
                    .List(.ListCount - 1, 2) = c.Offset(, 2).Value
                    .List(.ListCount - 1, 3) = c.Offset(, 3).Value
                    .List(.ListCount - 1, 4) = c.Offset(, 8).Value
                    .List(.ListCount - 1, 5) = c.Offset(, 9).Value
                    .List(.ListCount - 1, 6) = c.Offset(, 11).Value
                    .List(.ListCount - 1, 7) = c.Offset(, 12).Value
                Next c
            End If
        End With
        'positionnement du deuxième filtre. Mêmes instructions que pour le premier
        With Sheets("Feuil1")
            Set Plage = .Range(.[A6], .Cells(.Rows.Count, 13).End(xlUp))
            .AutoFilterMode = False
            Plage.AutoFilter 1, "=a*"
            Plage.AutoFilter 6, "D"
            With .AutoFilter.Sort
                .Header = xlYes
                .MatchCase = False
                .Orientation = xlTopToBottom
                .SortMethod = xlPinYin
                .Apply
            End With
        End With
        'remplissage de la listview
        With ListView2
            Set Plage = Sheets(1).AutoFilter.Range.Offset(1)
            Set Plage = Plage.Resize(Plage.Rows.Count - 1, 1)
            Set Plage = Plage.SpecialCells(xlCellTypeVisible)
            'suppression des entêtes de colonne
            .ColumnHeaders.Clear
            'ajout de 8 entêtes de colonne
            For i = 1 To 8
                .ColumnHeaders.Add
            Next i
            'déterminatiion de la largeur des colonnes
            .ColumnHeaders(1).Width = 50
            .ColumnHeaders(2).Width = 50
            .ColumnHeaders(3).Width = 50
            .ColumnHeaders(4).Width = 50
            .ColumnHeaders(5).Width = 50
            .ColumnHeaders(6).Width = 50
            .ColumnHeaders(7).Width = 50
            .ColumnHeaders(8).Width = 50
            'on masque les entêtes de colonne
            .HideColumnHeaders = True
            'alimentation de la listview pour chaque ligne d ela zone filtrée
            For Each c In Plage
                'ajout d'une ligne et de la valeur de la première colonne
                .ListItems.Add , , c.Value
                With .ListItems(.ListItems.Count)
                    'ajout de la valeur de la deuxième colonne
                    .ListSubItems.Add , , c.Offset(, 1).Value
                    'etc
                    .ListSubItems.Add , , c.Offset(, 2).Value
                    .ListSubItems.Add , , c.Offset(, 3).Value
                    .ListSubItems.Add , , c.Offset(, 8).Value
                    .ListSubItems.Add , , c.Offset(, 9).Value
                    .ListSubItems.Add , , c.Offset(, 11).Value
                    .ListSubItems.Add , , c.Offset(, 12).Value
                End With
            Next c
        End With
        'Spécifie l'affichage en mode "Détails"
        ListView2.View = lvwReport
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Filtrer une listView avec un predicate
    Par Petit Rasta dans le forum Windows Presentation Foundation
    Réponses: 16
    Dernier message: 28/04/2014, 15h45
  2. Filtrer une listview à l'aide d'un edittext
    Par redmonster dans le forum Composants graphiques
    Réponses: 7
    Dernier message: 03/06/2012, 21h24
  3. Filtrer une listView depuis un menu et sans utiliser d'EditText
    Par Invité dans le forum Composants graphiques
    Réponses: 4
    Dernier message: 20/07/2011, 11h58
  4. Filtrer un listView
    Par rabddoul dans le forum C#
    Réponses: 2
    Dernier message: 15/04/2010, 09h27
  5. initialisation d'une listview par une boucle
    Par sam_c_java dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/10/2007, 11h10

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