Insérer des données dans une listbox en fonction du résultat d'une autre

pumbathekings

XLDnaute Junior
Bonjour le forum,

J'ai via une discussion repris un code que j'essaie d'adapter à ma situation mais en vain.
Sur un USerform, j'ai une listbox "Fast_config" avec une liste de noms de colonne.

Lorsque le nom est selectionné dans cette listbox, alors les sous-fonctions colonne D de la Feuille "Functions" apparaitront dans la listbox "Subfunctions" si et seulement si il y a un "X" dans les cellules de la colonne selectionnée.

Voici le code ci-dessous. Il marche pour le premiere colonne selectionnée via la listbox "Fast_config", mais pas pour les autres.Auriez vous par hasard une idée sur le problème?
Merci.
Private Sub CommandButton7_click()
Dim Cel As Range, i%, Col%, Mot, j%, Y%, Trouve As Boolean
With Sheets("Functions")
For i = 16 To .UsedRange.Columns.Count
If .Cells(1, i) = Me.Fast_config.List(0) Then Col = i: Exit For
Next i

For Each Cel In .Range(.Cells(2, Col), .Cells(.Cells(Rows.Count, 4).End(xlUp).Row, Col))
If Cel <> "" Then
Mot = Split(Cel.Text, " ")
For i = LBound(Mot) To UBound(Mot)
If Mot(i) = "X" Then
Me.Subfunctions.AddItem .Cells(Cel.Row, 4).Value
Subfunctions.Column(1, Subfunctions.ListCount - 1) = Sheets("Functions").Cells(Cel.Row, 5)
Exit For
End If
Next i
End If
Next Cel
End With
End Sub

Pumba
 

pumbathekings

XLDnaute Junior
Re : Insérer des données dans une listbox en fonction du résultat d'une autre

Bonjour Iznogood,

Ci-joint le fichier.
Les colonnes à selectionner sont dans la feuille "Function" colonne P et Q.
Dans la feuille Input tu as le bouton "start.." qui lancera l'userform dans lequel se trouve les listbox.
si tu selectionnes "abc" et load, les sous-fonctions apparaitront dans la listbox "Subfunctions", mais le problème c'est que cela ne marche pas pour "def".

J'espere avoir été clair.
merci
 

Pièces jointes

  • test_insertion_sous-fonctions.xlsm
    59.1 KB · Affichages: 18

Iznogood1

XLDnaute Impliqué
Re : Insérer des données dans une listbox en fonction du résultat d'une autre

Pumb,

Quelques remarques préliminaires...

Rends ton code plus lisible : nomme tes objets.
Ainsi, cbExit est plus explicite que CommandButton4, de même frmFunctions est plus explicite que feuil1

J'ai remplacé la "listbox" Fast_Config par une "Combobox" pour s'affranchir du bouton "Load"

Il est plus "propre" de d'instancier un objet plutôt que d'utiliser sa définition :
Code:
Dim uf as New UserForm1
uf.show

plutôt que
Code:
UserForm1.show

Pour sortir d'une userform, il suffit d'écrire
Code:
Unload Me
 

Pièces jointes

  • test_insertion_sous-fonctions2.xlsm
    57.7 KB · Affichages: 19

pumbathekings

XLDnaute Junior
Re : Insérer des données dans une listbox en fonction du résultat d'une autre

Bonjour Iznogood,

J'ai l'impression que tu t'y connais plutot bien en VBA, du coup j'ai une petite question pour toi.

Lorsque je choisis une config via ta combobox, des sous fonctions apparaissent.
Lorsque je fais mon drag and drop entre mes deux premières listboxs ("listbox1" et "Functions"), mes données dans ma listbox "Subfunctions" disparaissent.

Y a t'il une solution pour remédier à ce problème ou il n'y a aucun moyen de corriger ca?
Merci

Pumba
 

Iznogood1

XLDnaute Impliqué
Re : Insérer des données dans une listbox en fonction du résultat d'une autre

Lors du drag and drop, la fonction Functions_BeforeDropOrPaste appelle une autre fonction Functions_change
dans laquelle se trouve l'instruction Me.Subfunctions.Clear qui efface le contenu de la listbox.

Modifie le code à l’intérieur de Functions_change pour obtenir le comportement voulu.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 333
Membres
103 188
dernier inscrit
evebar