LISTBOX intégrée à une variable utilisateur

cs_Marmounet Messages postés 7 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 17 février 2007 - 13 nov. 2006 à 17:52
cs_Marmounet Messages postés 7 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 17 février 2007 - 13 nov. 2006 à 18:54
    Bonsoir,


Dans un petit prgm je souhaite utiliser une LISTBOX inclue à une
variable utilisateur mais une action sur cette variable ListBox créer
une erreure. Il s'agit surement d'utiliser l'ordre SET mais je ne sais
pas comment procéder.


J'ai créer une variable


type VariableTest

    A as single

    B as Integer

    ListB as listBox

end type


dim VariableUtilisateur(4) as VariableTest


Mais lors de l'exécution les lignes suivantes provoquent une erreure


VariableUtilisateur(1).ListB.additem "12"

ou

VariableUtilisateur(1).listB.clear


Quelqu'un peut li me renseigner?


Merci par avance


Marmounet

8 réponses

lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
13 nov. 2006 à 18:02
Bonjour

a mon avis, c'est parce que c'est sous la forme d un objet et VB doit attendre une listbox physique.

en effet :

Var(1).ListB.ListCount

renvoie une erreur donc la listbox n existe meme pas...

Maintenant, pour contourner le probleme si ma théorie est bonne, pourquoi ne pas passer par un tableau par exemple ?

ps : Ya ptet un moyen de faire fonctionner comme ca aussi hein mais pour le moment, je vois pas trop. C'est ptet possible et super facilement ^^
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
13 nov. 2006 à 18:03
alors correction, c'est pas une question de physique puisque meme en ajoutant une list box ListB, ca plante qd meme . C'est donc autre chose.

Mon alternative est toujours possible mais le probleme reste entier avec cette méthode
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 nov. 2006 à 18:05
Salut
Peu commun comme solution !
Pour stocker des objets (composants), il n'y a que les collections.

Mais ce que tu peux faire, c'est créer une première ListBox ayant l'index 0, puis créer des copines avec Load maListBox(Index) où :
maListBox est le nom de ta ListBox (bien trouvé, hein !)
Index est un chiffre allant de 1 à 255 (une Form ne peut pas accueillir plus de 255 objets)
Par défaut, après un Load, les ListBox sont invisibles.
Si tu as besoin d'afficher ces ListBox, il te suffit de mettre maListeBox(monIndex).Visible = True et de la positionner avec maListeBox(monIndex).Move ...
Puisque tes ListBox ont un index, il suffit d'utiliser le même index dans ton tableau standard VariableUtilisateur
VariableUtilisateur(1).ListB.additem "12" --> ListB(1).additem "12"
ou
VariableUtilisateur(1).listB.clear --> listB(1).clear

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 nov. 2006 à 18:06
If faut pour celà que la listbox existe ou soit créée dynamiquement !

Une form, un bouton Command1 et une listbox List1

Voilà comment celà peut marcher avec un type :

Private Type VariableTest
    A As Single
    B As Integer
    ListB As ListBox
End Type


Dim VariableUtilisateur As VariableTest


Private Sub Form_Load()
  Set VariableUtilisateur.ListB = List1
End Sub




Private Sub Command1_Click()
  VariableUtilisateur.ListB.AddItem "voilà"
End Sub


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
13 nov. 2006 à 18:07
exact ^^

pas pensé :p
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
13 nov. 2006 à 18:12
Salut,
il faut effectivement que la ListBox existe, ensuite tu peux l'affecter

Private Type VariableTest
    A As Single
    B As Integer
    ListB As ListBox
End Type

Private Sub Command1_Click()
    Dim VariableUtilisateur(4) As VariableTest
   
    Set VariableUtilisateur(1).ListB = List1
    VariableUtilisateur(1).ListB.AddItem "12"
     
    Set VariableUtilisateur(2).ListB = List2
    VariableUtilisateur(2).ListB.AddItem "13"
  
End Sub

Daniel
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 nov. 2006 à 18:30
Oups, j'avais pas fait gaffe à la déclaration du tableau ... qui n'en est pas un, en effet.
Ok a un détail près : Si on dimensionne une variable dans une procédure, elle n'est valide que dans celle-ci.
Je pense qu'il faudrait mettre le Dim dans la partie Déclaration de la forme.

Mais je reste sur ma première impression : Une variable ne peut pas accueillir d'objet --> Voir Collection
0
cs_Marmounet Messages postés 7 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 17 février 2007
13 nov. 2006 à 18:54
Merci à tous
Pour renseigner la curiositée des ceux qui ont pris la peine de répondre. Je souhaitais me servir l'une listBox pour trier automatiquement les chaines que le prgm génere par diverses routines. Dans mon cas 250 variables est un nombre tout à fait acceptable
Je vais tester la solution dés ce soir
Merci encore
Marmounet
0
Rejoignez-nous