Créer et Utiliser un controle en dehors d'une Form [Résolu]

Signaler
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
Voila mon problème :
J'ai besoin d'une Listbox, ou au moins d'un objet ce comportant comme tel (un tableau qui, lorsqu'on en retire une valeur située à un index, met a jour les indexs des valeurs situées plus loin:
Exemple, mon tableau contient des chiffres de 0 a 999, si je vais à l'index 500, j'obtiendrai comme valeur 500, et si je retire la valeur (Par Liste.RemoveItem (500)) de l'index 500 et qu'après je lui demande de lire la valeur de l'index 500, j'obtiendrai 501 (qui était la valeur suivante)

Le problème, c'est que mon programme ne contient aucune Form, donc impossible de créer une vrai ListBox.
Tout dois tenir dans mon module...

J'ai bien essayer avec
Dim Liste as ListBox

Mais j'avoue ne pas comprendre le principe des With et autres choses nécessaires pour que la ListBox fonctionne (Le programme refuse de faire Liste.Additem , Liste.Clear ect ect)

Merci de vos lumières !!

2 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
32
Tu ne peux pas utiliser un controle en dehors d'un écran. Un controle a obligatoirement besoin d'un container pour etre posé. Ce container est toujours un écran ou un autre controle posé sur un écran.

Le message d'erreur parlant de with, pas très compréhensible, j'en conviens, c'est tout simplement parce que ton controle Liste n'existe pas lorsque tu essaye de lui affecter un item. Il n'a pas été créer (il ne suffit pas de le déclarer, c'est plus complexe). Et, pour les raisons indiquées au dessus, tu ne peux pas le créer.

Par contre dans ton cas, tu peux utiliser les collections :

----
Dim i As Integer
Dim Liste As Collection

Set Liste = New Collection

For i = 1 To 1000
   Liste.Add (i)
Next

MsgBox (Liste.Item(500))

Liste.Remove (500)

MsgBox (Liste.Item(500))
, ----
, ----
[code.aspx?ID=41455 Coloration Syntaxique pour VB6 By ]

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
Bonjour,

Les contrôles de VB ont tous besoin d'un container.
Je ne crois donc pas que tu puisses en utiliser un sans Form pour le recevoir !