BOX & Filtres de colonnes

Bonjour à tous,

J'ai quelques notions de VBA, mais je n'arrive pas à écrire le code désiré.

Je ne pense que ce soit très compliqué pour un utilisateur aguerri

Mon fichier contient des informations en colonne A-B et un résultat en colonne C.

Lorsque je filtre en tête de colonne A-B, j'obtiens un résultat ciblé.

Mon objectif est de créer deux boutons avec liste déroulante. L'une pour la colonne A et l'autre pour la colonne B.

Et de faire apparaître le résultat filtré dans une ListBox par exemple.

Je vois le tout dans un UserForm, mais je me complique peut-être la vie.

En passant par la Validation des données pour créer une liste, j'ai tous les doublons d'informations.

Mais liste est donc à rallonge pour un nombre de choix limité en réalité.

Si vous avez déjà créé des choses similaires ou si vous avez une direction à me donner, je suis preneur.

Merci pour votre aide

Shu

2019 04 04 14 17 26 2019 04 04 14 36 00

Bonjour Shu,

voici un exemple,

Salut i20100 et un grand merci pour ton code !

Vraiment c'est sympa de ta part Je n'aurais jamais été capable de l'écrire.

J'essai de le modifier maintenant pour l'adapter mais je coince

Concrètement j'ai 8 comboBox et un résultat en colonne i.

J'ai multiplié les lignes, modifié la Userform ok.

Mais j'aimerais n'afficher que le résultat dans la ListBox.

Le résultat de la colonne i par rapport aux choix qui ont été fait dans les 8 ComboBox.

Et là, je n'y arrive pas Peux tu m'aider ?

Je n'ai pas le besoin de rappeler les titres de colonnes dans la ListBox.

Uniquement le résultat de la colonne i.

Colonne C dans ton fichier d'exemple.

Sais tu faire ça ?

Merci pour ton aide !

Shu

Bonjour Boisgontierjacques,

Merci je vais conserver votre modèle pour une autre occasion.

Le code sera difficile à modifier.

Je vais attendre de savoir si Isabelle à une solution pour moi.

J'ai modifié le fichier mais je ne comprends pas vraiment comment arriver au résultat.

Ci joint mon fichier modifié et une image explicative.

Merci pour votre aide,

Shu

2019 04 08 11 33 47
5testcombolist.xlsm (27.21 Ko)

j'aimerais n'afficher que le résultat dans la ListBox.

Le résultat de la colonne i par rapport aux choix qui ont été fait dans les 8 ComboBox.

est ce qu'un 2ème Listbox pour afficher cette colonne unique ferait l'affaire ?

Bonjour Isabelle,

Si je peux cacher la première ListBox, pourquoi pas.

Le but est de faire un fichier de plus "propre" possible.

Des choix à faire via les ComboBox et un résultat affiché en dessous.

Dans mon fichier modifié, je ne sais pas vraiment ce que j'ai fait mais les ComboBox ne se parle pas entres elles.

En choix1 je prends le OUI et en choix2 je prends le bleu, le choix1 réaffiche des NON...

Je suis un peu perdu ^^

Mon objectif est l'image si jointe.

Merci,

Shu

2019 04 09 08 35 00

Bonjour,

Dim f, bd
Option Compare Text
Private Sub UserForm_Initialize()
  Set f = Sheets("bd")
  bd = f.Range("A2:I" & f.[A65000].End(xlUp).Row).Value
  Me.ListBox1.List = bd
  For k = 1 To 8
    Set d = CreateObject("Scripting.Dictionary")
    For i = LBound(bd) To UBound(bd)
       d(bd(i, k)) = ""
    Next i
    Me("ComboBox" & k).List = d.keys
  Next k
  Me.ListBox1.ColumnCount = 9
  Me.ListBox1.ColumnWidths = "0;0;0;0;0;0;0;0;30"
End Sub

Private Sub ComboBox1_click()
  Affiche 1
End Sub

Private Sub ComboBox2_click()
  Affiche 2
End Sub

Private Sub ComboBox3_click()
  Affiche 3
End Sub

Private Sub ComboBox4_click()
  Affiche 4
End Sub

Private Sub ComboBox5_click()
  Affiche 5
End Sub

Private Sub ComboBox6_click()
  Affiche 6
End Sub

Private Sub ComboBox7_click()
  Affiche 7
End Sub

Private Sub ComboBox8_click()
  Affiche 8
End Sub

Sub Affiche(col)
  temp = Me("Combobox" & col): n = 0
  Dim Tbl()
  For i = 1 To UBound(bd)
    If bd(i, col) = temp Then
        n = n + 1: ReDim Preserve Tbl(1 To UBound(bd, 2), 1 To n)
        For k = 1 To UBound(bd, 2): Tbl(k, n) = bd(i, k): Next k
     End If
  Next i
  Me.ListBox1.Column = Tbl
End Sub

Boisgontier

Bonjour Boisgontier,

Merci pour votre aide !

Je comprends plus du tout le code mais merci

Une dernière chose sans vouloir abuser ... Est il possible que les ComboBox soient liées entres elles ?

Exemple depuis le dernier fichier :

Si mes choix sont : OUI / blanc / MOT / DO / FA / OUI / GE / SH

Les options devraient être uniquement 1 / 2 / 3 / 4.

Si mes choix sont : OUI / bleu / MOT / DO / FA / OUI / GE / SH

Les options devraient être uniquement 5 / 6.

Etc.

J'imagine que je devrais rajouter un bout de code dans chaque ComboBox ?

Private Sub ComboBox1_click()
  Affiche 1
End Sub

C'était le cas dans le premier fichier d'Isabelle.

Sans doute quelque chose comme ça ?

[code][/Sub init_ComboBox()

Dim tbl1() As String

Dim tbl2() As String

Dim i As Long

For i = 1 To rangeSource.Rows.Count

ReDim Preserve tbl1(i): tbl1(i) = rangeSource(i, 1)

ReDim Preserve tbl2(i): tbl2(i) = rangeSource(i, 2)

If Exist_valeur(tbl1, rangeSource(i, 1).Value) = 0 Then Me.ComboBox1.AddItem rangeSource(i, 1)

If Exist_valeur(tbl2, rangeSource(i, 2).Value) = 0 Then Me.ComboBox2.AddItem rangeSource(i, 2)

Next i

End Subcode]

cf PJ

Boisgontier

!!! V I C T O I R E !!!

Merci beaucoup @Boisgontier.

Et merci également à @i20100.

Je vais essayer d'adapter tout ça maintenant mais le plus dur est fait

Une excellente journée à vous.

Shu

Rechercher des sujets similaires à "box filtres colonnes"