Liste

roadrunner_34 Messages postés 15 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 6 février 2009 - 20 nov. 2004 à 01:21
roadrunner_34 Messages postés 15 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 6 février 2009 - 20 nov. 2004 à 21:17
Bonjour,
voici une question qui va vous paraitre simple mais qui ne l'est pas pour un débutant comme moi.
Dans un fichier txt, j'ai 3 colonnes de données séparées par des ";".
je voudrais récuperer la premiere colonne pour l'intégrer dans un combobox, afin qu'après sélection, des labels m'affichent les élements correspondant, a savoir les 2 autres colonnes de la même ligne.
Si cela vous parait trop compliqué je suis preneur de tout autre méthode qui se rapprocherai de l'idée : 1 choix, 2 infos en face.
Merci de votre aide

4 réponses

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
20 nov. 2004 à 02:15
Salut roadrunner_34
Pour faire ce que tu veux faire, je te conseille de stocker tout ton fichier dans un tableau de données :
-1- Dimensionner un tableau comme ceci :
Type MonType
Variable(2) As String ' 3 variables par ligne : 0, 1 et 2
End Type
Dim Tablo() As MonType

-2- Ouverture du fichier
Open "MonFichier" For Input As #1

-3- Boucle de lecture
Do While Not EOF(1)

-4- Lecture de chaque ligne avec
Line Input #1, Ligne

-5- Convertion vers le tableau
A chaque ligne, tu fais :
' Augmentation du nb de données dans le tableau
Redim Preserve Tablo(UBound(Tablo) + 1, 3)
' Transfère les données dans le tablo
Tablo(UBound(Tablo)).Variable = Split(Ligne, ";")
' Insère la 1ere variable dans le Combo
Combo.AddItem Tablo(UBound(Tablo)).Variable(0)

-5- Bouclage de la boucle
Loop

-6- Fermeture du fichier
Close #1


-7- Lorsque un choix est fait dans le Combo, mettre dans Combo_Change ou _Click :
Ne sachant pas si tu vas faire un classement alphabétique dans ton combo, on ne peut pas se baser sur le numéro de l'item sélectionné dans le Combo, donc, on va rechercher la ligne en scrutant toutes les variables
Dim r As Long
For r = 0 To UBound(Tablo)
  If Tablo(r).Variable(0) = Combo.Text Then
    Label1.Caption = Tablo(r).Variable(1) ' met les données
    Label2.Caption = Tablo(r).Variable(2) ' dans les Labels
    Exit For
  End If
Next r


Maintenant, si tu as vraiment trop de données, si tu trouves que la recherche des infos est trop lente, il va te falloir changer de méthode et stocker tes données dans une base de données. Là, l'accès sera beaucoup plus rapide.

Vala
Jack
NB : Je ne répondrais pas aux messages privés
0
roadrunner_34 Messages postés 15 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 6 février 2009
20 nov. 2004 à 09:06
jack,
merci, pour les infos.
J'ai un message d'erreur sur la lecture du tableau, " redim icorrect"
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
20 nov. 2004 à 17:45
re roadrunner_34
As-tu bien mis la déclaration du Type et le Dim initial dans la partie Déclaration de ta forme ou d'un module ?

Vala
Jack
NB : Je ne répondrais pas aux messages privés
0
roadrunner_34 Messages postés 15 Date d'inscription vendredi 19 novembre 2004 Statut Membre Dernière intervention 6 février 2009
20 nov. 2004 à 21:17
Oui dans un module et là j'ai "redim incorect"
Si je met le type en déclaration de la form j'ai un message "impossible de definir un type public défini par l'utilisateur à l'interieur d'une classe "
Grrr!!! ça m'enerve ! ;)
0
Rejoignez-nous