ListView avec application de criteres en Combobox et OptionButton

belerofon

XLDnaute Occasionnel
Bonsoir All,
Comme d'hab, limité par mes connaissances en prog....
Aujourd'hui un souci avec une ListView sur laquelle je veux appliquer des criteres d affichage sous formes de combobox et de OptionButton
Tout est expliqué dans le fichier exemple ci joint...
Merci d'avance
J.
 

Pièces jointes

  • Exemple ListView Criteres.xls
    242 KB · Affichages: 199
  • Exemple ListView Criteres.xls
    242 KB · Affichages: 208
  • Exemple ListView Criteres.xls
    242 KB · Affichages: 208

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

Bonsoir
Prévoyez des tests sur les valeurs des ComboBox dans votre Inilvw1 et n'ajoutez que les lignes où tout ce qui est spécifié correspond, et appellerez cette Inilvw1 dans des procédures _Change pour tous les contrôles qui entraîneront logiquement un changement de la liste.
À +
 

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

Lut Dranreb,
Je te remercie, je crois voir ce que tu veux dire... IL faut que je rajoute donc 5 procédures _Change pour mes 5 controls et a la fin de chaque procédure je rajoute juste Inilw1 avant le End Sub?
J.
 

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

Oui c'est cela ! Je pense même qu'il n'y aura peut être que le IniLw1. Il m'arrive d'écrire des procédure sur une ligne comme ça, attendez que je retrouve un exemple.

Ouais c'est pas tout à fait le même cas mais l'ai un truc comme ça dans mon gestionnaire de noms perso:
VB:
Private Sub BtSupREF_Click(): LesCanardsBoiteux BtSupREF, ErreurRéf: End Sub
Private Sub BtSupBiz_Click(): LesCanardsBoiteux BtSupBiz, NomBizarre: End Sub
Private Sub BtSupEXT_Click(): LesCanardsBoiteux BtSupEXT, ClasseurExtrn: End Sub
Private Sub LesCanardsBoiteux(ByRef Bouton As CommandButton, ByRef ÇaCraint As Boolean)
If Left$(Bouton.ControlTipText, 6) = "Lister" Then
   DésactiverLes3
   LvwNoms.ListItems.Clear
   For Each Nom In ActiveWorkbook.Names: AnalyserLeNom
      If ÇaCraint Then AjouterLeNomÀLaListe
      Next Nom: Retailler
   ÉtatSpéc(Bouton) = Méchant
Else
   For Each Nom In ActiveWorkbook.Names: AnalyserLeNom
      If ÇaCraint Then Nom.Delete
      Next Nom
   ChkRéfFeuil_Click
   End If
End Sub
À +
 

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

re,
bon ca bug pour le moment et je ne sais pas pourquoi le debuggeur me dit ca ,
mais peut tu me dire si je suis sur la bonne voie au vue du code que j ai changé???
Merci
J.
 

Pièces jointes

  • Exemple ListView Criteres.xls
    236.5 KB · Affichages: 125
  • Exemple ListView Criteres.xls
    236.5 KB · Affichages: 131
  • Exemple ListView Criteres.xls
    236.5 KB · Affichages: 138

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

Non je voyais plutôt une seule séquence de remplissage et les test juste après le For.
Vous pouvez déclarer une variable Ok As Boolean pour éviter des GoTo
If OptionButton1.Value Then Ok = True
ElseIf OptionButton2.Value Then Ok = la condition nécessaoire
ElseIf ...
Endif
If Ok Then
et vous remplissez la lignhe qui remplit les conditions.

Vous vous y retrouveriez plus facilement en mettant des noms de plages aux colonnes de votre liste et aux contrôles, précédés eux d'un préfixe de 3 lettres, par exemple OpbTous pour OptionButton1

Pour reprendre la valeur d'une colonne nommée "Toto" vous pourriez prendre .[Toto].Rows(i).Value (personnellement je prend plutôt L que i pour des N° de lignes)
 
Dernière édition:

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

Bon voila ou j en suis rendu pour l instant,
le choix des OptionButton est pris en charge dans la ListView...
Par contre se pose désormais un autre probleme...
Le contenu de mes combobox qui etait judicieux lorsque tout le tableau etait affiché devient obsolete lorsque le premier niveau de tri est effectué...
Va falloir que je me penche sur une methode de mise a jour du contenu de mes combobox en fonction de ce qu il reste d afficher dans la ListView...
Ca commence a ressembler a une usine a gaz :(((

J.
PS: C est mieux avec la P.J.
 

Pièces jointes

  • Exemple ListView Criteres.xls
    242 KB · Affichages: 139
  • Exemple ListView Criteres.xls
    242 KB · Affichages: 136
  • Exemple ListView Criteres.xls
    242 KB · Affichages: 132
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

Mais arrangez vous donc plutôt pour n'avoir qu'un seul jeu de remplissage des lignes
et utilisez les ElseIf pour les optionButton : inutile de tester le 2 si le 1 a marché
Il vaut mieux boucler sur un N°de ligne je crois.
 
Dernière édition:

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

Pour mon probleme de ComboBox, je pense savoir comment faire mais je ne sais pas si c est possible :

A la fin du remplissage de mon tableau ( a la fin du Sub IniLvw1() en fait) il faudrait que mes ComboBox respectives viennent s'alimenter sur les colonnes de la ListView plutot que sur les colonne de tableau Recap en fait...

C'est possible de faire ca?
 

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

DranReb,
Vous avez tout a fait raison et j aimerais pouvoir le faire... je vais potasser ca, mais est ce que ca ne risque pas d etre completement le foutoir lorsque j aurais ajouter les 4 conditions suivantes a une seule et meme boucle?
 

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

Ça ne me paraît pas une bonne idée car les valeur des ComboBox devront aussi intervenir lans les lignes à retenir dans la ListView si j'ai bien compris. Par contre vous pouvez les initialiser dans les OptionButton_Change si leur contenu peut différer selon leur état

Edit: Je répondais au post précédent
C'est un peu pour éviter le foutoir que je vous recommandais d'utiliser une variable déclarée As Boolean
 
Dernière édition:

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

DranReb,
je cale la :(((
j ai modifier un peu le code, peux tu y jeter un oeil et me dire si c est bien ca que tu as a l esprit???
Merci
 

Pièces jointes

  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 213
  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 223
  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 233

belerofon

XLDnaute Occasionnel
Re : ListView avec application de criteres en Combobox et OptionButton

DranReb,
DranReb,
voila le code a nouveau modifié avec une variable booleenne et des ElseIf mais maintenant ce foutu debuggeur me dit que mes ElseIf ont pas de If ... :(

PAr ailleur pour le coup du " .[M].Rows.Value " dans mon code c est comme ca qu il faut faire???
Merci
 

Pièces jointes

  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 164
  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 180
  • Exemple ListView Criteres.xls
    249.5 KB · Affichages: 191
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : ListView avec application de criteres en Combobox et OptionButton

On se rapproche grandement. je le voyais ainsi en fait:
VB:
' Initialisation de ListView1
Sub Inilvw1()
Dim Der As Integer, Cel As Range, Plage As Range, Ok As Boolean

With Sheets("Recap")
   Der = .Range("A65000").End(xlUp).Row

' Remise à zéro de la ListView1
   ListView1.ListItems.Clear

' Remplissage des cellule du tableau ListView1
   Set Plage = .Range("A4:A" & Der)
    For Each Cel In Plage
        If OptionButton1 Then
            Ok = True
        ElseIf OptionButton2 Then
            Ok = Cel.Value <> ""
        ElseIf OptionButton3 Then
            Ok = Cel.Value = ""
            End If
        If Ok Then
            With ListView1
                .ListItems.Add , , Cel
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 1)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 4)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 8)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 11)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 12)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 15)
                .ListItems(.ListItems.Count).ListSubItems.Add , , Cel.Offset(0, 16)
                End With
             End If
        Next Cel
    End With
End Sub
S'il faut ensuite encore limiter la liste selon des choix effectués dans les ComboBox, il ne restera plus qu'à ajouter avant le If Ok Then d'autres instructions genre If ComboBOxX.ListIindex <> -1 then Ok = Ok And Cel.Offset(,...).Value = ComboBoxX.Value
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 756
Messages
2 091 754
Membres
105 062
dernier inscrit
Ret78