J'ai un fichier excel dans lequel je saisis des données via un Userform.
Dans la fenêtre, j'ai donc plusieurs item qui doivent être sélectionnés, ou saisis au clavier.
Je souhaite que le choix dans une liste ait des conséquences sur le contenu d'une 2ème liste dans cette même fenêtre Userform.
Par exemple :
1- l'utilisateur dans un premier combobox a le choix entre fruits, légumes, viandes, poissons
2- dans un second combobox du même UserForm, s'il a choisi fruits, ce second combobox propose une liste de fruits, s'il a choisi Légumes, ce second combobox propose une liste de légumes, ....
J'espère que cela vous paraît clair ?
Si quelqu'un peut me dire comment réaliser ceci.... Merci d'avance.
Re : [VBA] Trier les possibilités d'un Combobox en fonction d'autres choix
Bon, en fait, c'est pas si simple... pour un neuneu lambda.
Alors, voici mon fichier Excel en pj.
En fait, dans l'onglet Tables, vous trouverez en colonne F mes catégories de choses à manger (légumes, fruits...) et en colonne E les sortes de fruits, légumes pour reprendre la métaphore de mon exemple.
Dans le Userform du 1er onglet quand on clique sur "Nouvelle Modification Programme", je voudrais qu'après sélection d'une ligne, le choix des OP soit restreint aux OP de la ligne concernée.
J'ai beau copier coller la macro du lien donné ci-dessus, en remplaçant le nom de mes combobox et en remplaçant les noms de colonne, ça ne marche pas...
Est-ce que l'un d'entre vous peut m'aider ?
Pour info, j'ai testé avec le code de base ci-dessous :
Code:
Dim f
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("b2:b" & f.[B65000].End(xlUp).Row)
mondico(c.Value) = ""
Next c
Me.ComboBox1.AddItem "(tous)"
For Each c In mondico.keys
Me.ComboBox1.AddItem c
Next c
Me.ComboBox1.ListIndex = 0
End Sub
Private Sub ComboBox1_Change()
Me.ComboBox2.Clear
For Each c In f.Range("a2:a" & f.[a65000].End(xlUp).Row)
If c.Offset(0, 1) = Me.ComboBox1 Or Me.ComboBox1 = "(tous)" Then
Me.ComboBox2.AddItem c
End If
Next c
End Sub
Private Sub ComboBox2_Change()
ActiveCell = Me.ComboBox2
Unload Me
End Sub
Je l'ai supprimé de mon fichier excel puisque ça ne marchait pas.
Ben ouvrez le lien, récupérez OutIdx.xls, sauvegardez le sur un répertoire de service, Ouvrez DémoOutIdx.xls et examinez plus particulièrement la Démo ComboBoxCasc.
À +
Ah oui ! là, c'est le drame !
Merci pour les 2 fichiers, mais là, c'est un peu le syndrome de la poule ayant trouvé un couteau...
Autant je vois bien que la ComboBox fait ce que j'aimerais faire dans mon fichier, autant je n'en comprends pas la programmation, malgré la 1ère feuille. Ext-ce que vous pourriez m'en dire plus ?
Bonjour.
Certainement. Qu'est ce que vous ne comprenez pas de prime abord ?
Ce qui peut déstabiliser c'est qu'il n'y a aucun code dans l'UfCbxCasc de DémoOutIdx.xls pour gérer les ComboBox.
C'est normal, c'est parce que le module de classe ComboBoxCasc se charge de tout et vous prévient quand une combinaison de valeurs existantes a été choisie par l'opérateur (évènement Bingo)
Il suffit d'y ajouter (méthode Add) au début chaque ComboBox concerné par la chaine avec sa colonne d'une plage devant le garnir intelligemment en fonction des choix, un Actualiser et hop! c'est parti !
À +