roadrunner_34
Messages postés15Date d'inscriptionvendredi 19 novembre 2004StatutMembreDernière intervention 6 février 2009
-
20 nov. 2004 à 01:21
roadrunner_34
Messages postés15Date d'inscriptionvendredi 19 novembre 2004StatutMembreDerniè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
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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
roadrunner_34
Messages postés15Date d'inscriptionvendredi 19 novembre 2004StatutMembreDerniè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 ! ;)