OVH Cloud OVH Cloud

Gérer propriété value dans Listbox en cascade

1 réponse
Avatar
JMP
bonjour la communauté,

c'est ma première question à votre forum ...

J'ai une cascade de trois listes : 1 listbox "Lstbanc" avec la marque (Ma),
1 autre "Lsttype" avec le type (Ty) et une combo "Cmbsoft" avec la version de
logiciel(Soft). Un ensemble cohérent de trois valeurs Ma-Ty-Soft préexiste
dans le fichier excel et doit être affiché dans les listes par le programme.
L'utilisateur a la possibilité de modifier n'importe quelle liste (en
respectant la cascade) et ensuite, la nouvelle triplette est sauvegardée dans
Excel.

Mon problème : j'assigne la valeur préexistante (Ma par ex.) à Listbox.value
et, malgré cela, il arrive parfois que Listbox.value reste "". Par contre, la
propriété Listindex est automatiquement correcte sans que j'y touche. Je
deviens dingue avec ce truc. Ce-dessous la procédure qui remplit les listes.
Les trois valeurs existantes sont passées en paramètre (ce sont des types
string et les données sont aussi de type "Texte" dans la feuille excel).
Quelqu'un peut-il m'aider à obtenir des propriétés value et listindex
cohérentes ?

Merci d'avance à tous et toutes.

Sub Fill_Combo(frm, Ma, Ty, s)
Dim i As Long, j As Long, k As Long
frm.Lstbanc.Clear

For i = 1 To 3
frm.Lstbanc.AddItem Banc(i)
If Marque(i) = Ma Then
frm.Lstbanc.Value = Ma
frm.LstType.Clear

For j = 1 To 10
If TypeBanc(i, j) <> "" Then
frm.LstType.AddItem TypeBanc(i, j)
If TypeBanc(i, j) = Ty Then
frm.LstType.Value = Ty
frm.CmbSoft.Clear

'Remplir la Combo avec les versions de logiciel
correspondant à la marque et au type
For k = 1 To 20
If SoftBanc(i, j, k) <> "" Then
frm.CmbSoft.AddItem SoftBanc(i, j, k)
If SoftBanc(i, j, k) = s Then
frm.CmbSoft.ListIndex = k - 1
End If
Next k
End If
End If
Next j
End If
Next i
End Sub


Private Sub LstBanc_Change()
Dim i As Long, j As Long
frm.LstType.Clear
frm.CmbSoft.Clear
For i = 1 To 3
If Banc(i) = frm.Lstbanc.Value Then
For j = 1 To 10
If TypeBanc(i, j) <> "" Then
frm.LstType.AddItem TypeBanc(i, j)
End If
Next j
End If
Next i
End Sub

Private Sub LstType_Change()
Dim i As Long, j As Long, k As Long, l As Long, m As Long
frm.CmbSoft.Clear
For i = 1 To 3
If Banc(i) = frm.Lstbanc.Value Then
For j = 1 To 10
If TypeBanc(i, j) <> "" And TypeBanc(i, j) =
frm.LstType.Value Then
For k = 1 To 20
If SoftBanc(i, j, k) <> "" Then frm.CmbSoft.AddItem
SoftBanc(i, j, k)
Next k
End If
Next j
End If
Next i
End Sub

1 réponse

Avatar
PMO
Bonjour,

Je n'ai pas bien compris.
Pouvez-vous me faire parvenir votre classeur (édulcoré si
problème de confidentialité) par l'intermédiaire de
http://cjoint.com/
ou à mon adresse personnelle
patrickPOINTmorangeAROBASElapostePOINTnet
(remplacez POINT par . et AROBASE par @)

Cordialement.
--
PMO
Patrick Morange



bonjour la communauté,

c'est ma première question à votre forum ...

J'ai une cascade de trois listes : 1 listbox "Lstbanc" avec la marque (Ma),
1 autre "Lsttype" avec le type (Ty) et une combo "Cmbsoft" avec la version de
logiciel(Soft). Un ensemble cohérent de trois valeurs Ma-Ty-Soft préexiste
dans le fichier excel et doit être affiché dans les listes par le programme.
L'utilisateur a la possibilité de modifier n'importe quelle liste (en
respectant la cascade) et ensuite, la nouvelle triplette est sauvegardée dans
Excel.

Mon problème : j'assigne la valeur préexistante (Ma par ex.) à Listbox.value
et, malgré cela, il arrive parfois que Listbox.value reste "". Par contre, la
propriété Listindex est automatiquement correcte sans que j'y touche. Je
deviens dingue avec ce truc. Ce-dessous la procédure qui remplit les listes.
Les trois valeurs existantes sont passées en paramètre (ce sont des types
string et les données sont aussi de type "Texte" dans la feuille excel).
Quelqu'un peut-il m'aider à obtenir des propriétés value et listindex
cohérentes ?

Merci d'avance à tous et toutes.

Sub Fill_Combo(frm, Ma, Ty, s)
Dim i As Long, j As Long, k As Long
frm.Lstbanc.Clear

For i = 1 To 3
frm.Lstbanc.AddItem Banc(i)
If Marque(i) = Ma Then
frm.Lstbanc.Value = Ma
frm.LstType.Clear

For j = 1 To 10
If TypeBanc(i, j) <> "" Then
frm.LstType.AddItem TypeBanc(i, j)
If TypeBanc(i, j) = Ty Then
frm.LstType.Value = Ty
frm.CmbSoft.Clear

'Remplir la Combo avec les versions de logiciel
correspondant à la marque et au type
For k = 1 To 20
If SoftBanc(i, j, k) <> "" Then
frm.CmbSoft.AddItem SoftBanc(i, j, k)
If SoftBanc(i, j, k) = s Then
frm.CmbSoft.ListIndex = k - 1
End If
Next k
End If
End If
Next j
End If
Next i
End Sub


Private Sub LstBanc_Change()
Dim i As Long, j As Long
frm.LstType.Clear
frm.CmbSoft.Clear
For i = 1 To 3
If Banc(i) = frm.Lstbanc.Value Then
For j = 1 To 10
If TypeBanc(i, j) <> "" Then
frm.LstType.AddItem TypeBanc(i, j)
End If
Next j
End If
Next i
End Sub

Private Sub LstType_Change()
Dim i As Long, j As Long, k As Long, l As Long, m As Long
frm.CmbSoft.Clear
For i = 1 To 3
If Banc(i) = frm.Lstbanc.Value Then
For j = 1 To 10
If TypeBanc(i, j) <> "" And TypeBanc(i, j) =
frm.LstType.Value Then
For k = 1 To 20
If SoftBanc(i, j, k) <> "" Then frm.CmbSoft.AddItem
SoftBanc(i, j, k)
Next k
End If
Next j
End If
Next i
End Sub