Créer et Utiliser un controle en dehors d'une Form

Résolu
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013 - 1 juin 2008 à 13:51
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 1 juin 2008 à 15:54
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 juin 2008 à 15:54
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
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
1 juin 2008 à 15:52
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 !
0
Rejoignez-nous