ListBox sous conditions VBA
Bonjour à tous.
Je ne suis pas très douée en VBA et depuis hier je bloque sur un truc certainement tout simple mais je n'y arrive pas...
Je suis en train de faire un Userform pour saisir des infos qui seront enregistrées sur une feuille Excel. Pour compléter le Userform, certaines infos sont tirées d'une autre feuille Excel (qui sert de base de données) ce qui me permet de remplir mes combobox.
Jusque là pas de soucis.
Mon problème maintenant c'est que je voudrais qu'en fonction des choix faits dans les deux premières combobox, les choix présents dans la liste box varient. (Avec le fichier joint ça sera plus simple à comprendre)
En gros, si dans les premières combobox, je choisis Modèle A + Zone 1, mes choix dans la listebox seront 1,2,3,4,5. Si je choisis Modèle A + Zone 2, les choix dans la listbox seront 1,5,6,7. Et ainsi de suite.
Sachant que le fichier joint est un modèle simplifié et que pour mon projet original, il devra y avoir beaucoup de modèles et 5 zones différentes...
Voilà, j'espère que quelqu'un aura compris mon problème et pourra m'éclairer un peu. Merci
Bonjour,
Une piste. Je suis parti, pour l'exemple, sur le fait que les noms des modèles sont suivis d'un nombre (dans ton fichier, le 1) séparé par un espace puisque je n'en sais pas plus :
Private Sub ComboBox1_Click()
Remplir
End Sub
Private Sub ComboBox2_Click()
Remplir
End Sub
Sub Remplir()
Dim Cel As Range
If ComboBox1.Text <> "" And ComboBox2.Text <> "" Then
With Worksheets("Feuil1"): Set plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
ListBox1.Clear
For Each Cel In plage
If Right(Cel.Value, Len(Cel.Value) - InStrRev((Cel.Value), " ")) = ComboBox1.Text _
And Cel.Offset(, 1).Value = ComboBox2.Text Then Me.ListBox1.AddItem Cel.Offset(, 2).Value
Next Cel
End If
End Sub
Merci beaucoup pour cette réponse. Je suis désolée je me suis mal expliquée avec ce fichier test...
Le fichier envoyé étant un exemple, il n'y a pas de numéro après les noms des modèles... les noms des mobèles sont "MO", "BR", "TS" .... Ainsi pour un certains nombre. Du coup, je n'arrive pas à adapter le code que vous m'avez proposé ....
En fait les valeurs seraient plutôt comme suit :
Modèles Zone Pièce
MO Préparation Couteau
MO Préparation Base
MO Préparation Fillet
MO Assemblage Base
MO Assemblage Tige
MO Montage Fillet
BR Préparation Couteau
BR Préparation Tranches
et ainsi de suite....
Merci de votre aide !!!
Salut,
Voici une proposition basée sur le filtre avancé :
Sub M_Filtre()
With Sheets("Feuil2")
Sheets("Feuil1").Columns("A:C").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("F1:G2"), CopyToRange:=.Range("I1"), Unique:=False
End With
End Sub
Chaque changement d'une Combobox modifie la zone de critère et le résultat
du filtrage est passé à la ListBox via sa propriété RowSource.
A+
H
C'est bon j'ai réussi à m'en sortir avec la proposition de Theze ! En comprenant chaque bout de code ça va toute de suite mieux
Merci !!!
LordNelson je garde ta proposition sous le coude ça peut toujours servir.
Encore merci !