OVH Cloud OVH Cloud

un bug avec des listbox ?

4 réponses
Avatar
pie
Bonjour,

En faisant une petite application sous excell, j'ai rencontré le problème
suivant :

1)lorsque je sélectionne une valeur dans une listbox, en faisant
listboxmachin.text="truc",
la routine éventuelle listboxmahcin_click() est appelée
(bon, ok, suffit de le savoir: question au passage: existe-t-il un moyen
pour qu'une routine de ce type ne soit exécutée *que* si l'on clique sur la
listbox *avec la souris* ?)
2)En fait, le "bug" est le suivant:
après execution de la ligne de code <listboxmachin.text="truc">, la ligne
(de la listbox dans le formulaire) où se trouve "truc" est bien surlignée,
mais... la valeur "listboxmachin.text" reste, *parfois*, égale à "" (rien),
c'est à dire qu'elle ne prend pas la valeur "truc".

du coups, si je fais:
var="truc"
listboxmachin.text=var
et que dans la routine listboxmachin_click(), il y a <var=
listboxmachin.text>...
je me retrouve avec plus rien dans "var"... (ce qui, on l'imagine, ne
correspond pas à mon souhait!)

le plus étonnant : des fois ça marche, des fois ça ne marche pas. ça dépend
apparemment de la listbox.
Bref, là, je crois qu'il y a vraiment comme un bug de visual basic lui-même
!

S'agit-il d'un bug connu ?
Quelqu'un a-t-il une lumière susceptible de dissiper ce mystère ténébreux
pour l'humble néophyte que je suis ?

d'avance, merci !!

4 réponses

Avatar
LE TROLL
Bonjour,

Tu parles d'Excel, puis de VB, voire de VBa ???

Pour que ça réponde au click, faut mettre la procédure événementielle
click (par défaut)...

Ce code tourne, voici :

'form1, liste
Option Explicit
Sub Form_Load() ' chargement pour l'exemple
Dim i As Long
List1.Clear
For i = 1 To 30 Step 3
List1.AddItem i
Next i
End Sub
Sub List1_Click() ' procédure par défaut de la ListBox
Dim contenu_liste As String
If List1.ListCount > 0 Then: contenu_liste = List1.List(List1.ListIndex)
MsgBox "N° de la liste = " & List1.ListIndex & vbLf & "Contenu de la liste
= " & contenu_liste
End Sub

---------fin--------------
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur MES ROMANS édités
Le serpent
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Le Gaulois
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"pie" a écrit dans le message de news:
el0qkt$ihr$
Bonjour,

En faisant une petite application sous excell, j'ai rencontré le problème
suivant :

1)lorsque je sélectionne une valeur dans une listbox, en faisant
listboxmachin.text="truc",
la routine éventuelle listboxmahcin_click() est appelée
(bon, ok, suffit de le savoir: question au passage: existe-t-il un moyen
pour qu'une routine de ce type ne soit exécutée *que* si l'on clique sur
la listbox *avec la souris* ?)
2)En fait, le "bug" est le suivant:
après execution de la ligne de code <listboxmachin.text="truc">, la ligne
(de la listbox dans le formulaire) où se trouve "truc" est bien surlignée,
mais... la valeur "listboxmachin.text" reste, *parfois*, égale à ""
(rien), c'est à dire qu'elle ne prend pas la valeur "truc".

du coups, si je fais:
var="truc"
listboxmachin.text=var
et que dans la routine listboxmachin_click(), il y a <var=
listboxmachin.text>...
je me retrouve avec plus rien dans "var"... (ce qui, on l'imagine, ne
correspond pas à mon souhait!)

le plus étonnant : des fois ça marche, des fois ça ne marche pas. ça
dépend apparemment de la listbox.
Bref, là, je crois qu'il y a vraiment comme un bug de visual basic
lui-même !

S'agit-il d'un bug connu ?
Quelqu'un a-t-il une lumière susceptible de dissiper ce mystère ténébreux
pour l'humble néophyte que je suis ?

d'avance, merci !!



Avatar
LE TROLL
Bonjour,

Tu parles d'Excel, puis de VB, voire de VBa ???

Pour que ça réponde au click, faut mettre la procédure événementielle
click (par défaut)...

Ce code tourne, voici :

'form1, liste
Option Explicit
Sub Form_Load() ' chargement pour l'exemple
Dim i As Long
List1.Clear
For i = 1 To 30 Step 3
List1.AddItem i
Next i
End Sub
Sub List1_Click() ' procédure par défaut de la ListBox
Dim contenu_liste As String
If List1.ListCount > 0 Then: contenu_liste = List1.List(List1.ListIndex)
MsgBox "N° de la liste = " & List1.ListIndex & vbLf & "Contenu de la liste
= " & contenu_liste
End Sub

---------fin--------------


--
Merci beaucoup, au revoir et à bientôt :o)
------
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur MES ROMANS édités
Le serpent
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Le Gaulois
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"pie" a écrit dans le message de news:
el0qkt$ihr$
Bonjour,

En faisant une petite application sous excell, j'ai rencontré le problème
suivant :

1)lorsque je sélectionne une valeur dans une listbox, en faisant
listboxmachin.text="truc",
la routine éventuelle listboxmahcin_click() est appelée
(bon, ok, suffit de le savoir: question au passage: existe-t-il un moyen
pour qu'une routine de ce type ne soit exécutée *que* si l'on clique sur
la listbox *avec la souris* ?)
2)En fait, le "bug" est le suivant:
après execution de la ligne de code <listboxmachin.text="truc">, la ligne
(de la listbox dans le formulaire) où se trouve "truc" est bien surlignée,
mais... la valeur "listboxmachin.text" reste, *parfois*, égale à ""
(rien), c'est à dire qu'elle ne prend pas la valeur "truc".

du coups, si je fais:
var="truc"
listboxmachin.text=var
et que dans la routine listboxmachin_click(), il y a <var=
listboxmachin.text>...
je me retrouve avec plus rien dans "var"... (ce qui, on l'imagine, ne
correspond pas à mon souhait!)

le plus étonnant : des fois ça marche, des fois ça ne marche pas. ça
dépend apparemment de la listbox.
Bref, là, je crois qu'il y a vraiment comme un bug de visual basic
lui-même !

S'agit-il d'un bug connu ?
Quelqu'un a-t-il une lumière susceptible de dissiper ce mystère ténébreux
pour l'humble néophyte que je suis ?

d'avance, merci !!



Avatar
pie
Merci, pour le tuyeau consistant à remplacer "var=list1.text" par "var=
List1.List(List1.ListIndex)" !
puisque la fonction ".index" fonctionne bien, elle.
reste que la fonction .text bug (environ une fois sur cinq).

Je parlais d'un module dans Excel (qui utilise VBa, donc (?))

Cordialement,

"LE TROLL" <le a écrit dans le message de news:
%
Bonjour,

Tu parles d'Excel, puis de VB, voire de VBa ???

Pour que ça réponde au click, faut mettre la procédure événementielle
click (par défaut)...

Ce code tourne, voici :

'form1, liste
Option Explicit
Sub Form_Load() ' chargement pour l'exemple
Dim i As Long
List1.Clear
For i = 1 To 30 Step 3
List1.AddItem i
Next i
End Sub
Sub List1_Click() ' procédure par défaut de la ListBox
Dim contenu_liste As String
If List1.ListCount > 0 Then: contenu_liste = List1.List(List1.ListIndex)
MsgBox "N° de la liste = " & List1.ListIndex & vbLf & "Contenu de la
liste = " & contenu_liste
End Sub

---------fin--------------
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur MES ROMANS édités
Le serpent
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Le Gaulois
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------


Avatar
LE TROLL
Voici avec listX.TEXT


'form1, liste
Option Explicit

Sub Form_Load() ' chargement pour l'exemple
Dim i As Long
List1.Clear
For i = 1 To 30 Step 3
List1.AddItem i
Next i
End Sub

Sub List1_Click() ' procédure par défaut de la ListBox
Dim contenu_liste As String
Dim a As String
If List1.ListCount > 0 Then: contenu_liste = List1.List(List1.ListIndex)
a = "N° de la liste = " & List1.ListIndex & vbLf
a = a & "Contenu de la liste(i) = " & contenu_liste & vbLf
a = a & "Contenu de la liste(Text) = " & List1.Text
MsgBox a, vbInformation
End Sub


--
Merci beaucoup, au revoir et à bientôt :o)
------
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur MES ROMANS édités
Le serpent
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Le Gaulois
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"pie" a écrit dans le message de news:
el1eea$1ec$
Merci, pour le tuyeau consistant à remplacer "var=list1.text" par "var=
List1.List(List1.ListIndex)" !
puisque la fonction ".index" fonctionne bien, elle.
reste que la fonction .text bug (environ une fois sur cinq).

Je parlais d'un module dans Excel (qui utilise VBa, donc (?))

Cordialement,

"LE TROLL" <le a écrit dans le message de news:
%
Bonjour,

Tu parles d'Excel, puis de VB, voire de VBa ???

Pour que ça réponde au click, faut mettre la procédure événementielle
click (par défaut)...

Ce code tourne, voici :

'form1, liste
Option Explicit
Sub Form_Load() ' chargement pour l'exemple
Dim i As Long
List1.Clear
For i = 1 To 30 Step 3
List1.AddItem i
Next i
End Sub
Sub List1_Click() ' procédure par défaut de la ListBox
Dim contenu_liste As String
If List1.ListCount > 0 Then: contenu_liste = List1.List(List1.ListIndex)
MsgBox "N° de la liste = " & List1.ListIndex & vbLf & "Contenu de la
liste = " & contenu_liste
End Sub

---------fin--------------
Site de MES LOGICIELS
http://irolog.free.fr
Site éditeur MES ROMANS édités
Le serpent
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Le Gaulois
http://manuscritdepot.com/a.joseph-attila-pusztay.2.htm
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------