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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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