Lire données avec fonction Split

Résolu
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011 - 29 déc. 2007 à 18:14
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011 - 6 janv. 2008 à 21:43
Bonjour,

Je suis débutant, j'utilise Visual basic 2005 Express Edition et j'appelle à l'aide toutes les personnes qui savent comment fonctionne la fonction Split !!

Voilà, j'ai une petite base de données de 10 lignes, sur un fichier.txt, représentant 10 salariés. Chaque ligne prend la forme suivante :
1. nom_prénom; nb_heures; salaire_brut/heure
2. nom_prénom; nb_heures; salaire_brut/heure
3. nom_prénom; nb_heures..........
4. ....;....;....

J'ai donc plusieurs variables pour chaque salarié.
J'aimerai, en cliquant sur un bouton, que le programme accède
à ce fichier(ex: C:\Dossier\Donnees.txt) et faire en sorte
qu'apparaisse la première variable (tous les nom_prénom des
salariés) dans une ListBox. Et ce, de manière à ce que
l'utilisateur de mon programme n'ait plus qu'à cliquer sur
un nom dans cette ListBox pour qu'apparaissent les autres
variables dans différents TextBox.

J'ai vu qu'on pouvait utiliser la fonction Split, mais je ne
sais pas comment m'en servir ! J'ai compris le principe comme
quoi il faut spécifier le séparateur (ici ";") mais bon,
c'est bien la seule chose que j'ai assimilé.... En terme de
lignes de codes pour l'instant c'est le néant..

Merci d'avance pour vos réponses :)

8 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 déc. 2007 à 18:27
Le principe de la fonction Split, c'est de découper une chaine de caractère en un tableau d'éléments contenus dans la chaine et séparés par le séparateur que tu vas indiquer à la fonction.

Appliquer à ton cas, tu vas lire la première ligne de ton fichier, tu vas la passer à la "moulinette" Split en indiquant le ";" comme séparateur. Tu vas donc te retrouver avec un tableau de 3 éléments, dont le premier va représenté le nom_prenom, le second sera le nb_heure et le troisième, le salaire.

Il ne te reste plus qu'à stocker ou utiliser ces informations, et recommencer avec chacune des lignes du fichier, obtenant chaque fois un tableau de même structure.

---- 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
29 déc. 2007 à 18:34
La fonction split est suffisamment bien exposée dans l'aide en ligne !
Tu obtiens un array de tes valeurs (celles séparées par ton séparateur ... ici ton point-virgule) et cet array est ensuite traité comme n'importe quel array !

Ce qui est plus étonnant, est que tu traites ainsi en base de données un fichier texte.
Si ta base de données n'est pas énorme et que tu tiens à utiliser un fichier texte comme base de données,
il te faut structurer ce fichier et l'écrire en utilisant le mode random puis le lire en utilisant des Get...

Je crois que tu devrais commencer par là (voir l'exemple clair donné dans ton aide en ligne pour de tels fichier, aide en ligne à ouvrir sur le mot Open)
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
29 déc. 2007 à 18:42
Sauf si le fichier n'est pas au départ une base de données, mais un fichier d'export de données généré par un autre logiciel. Dans ce cas difficile de le structurer différenment que de la sorte.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011
5 janv. 2008 à 14:50
Merci pour vos réponses !! Mais je le rapelle : JE SUIS DEBUTANT !!! Et j'avai déjà regardé l'aide en ligne... Comme je le disai, c'est en terme de LIGNE DE CODES que je fai appel à vous... J'ai compris à quoi servait la fonction Split, et merci pour vos explications qui m'ont permi de comprendre encore un petit peu mieux..; Mais  pour ce qui est du code.. Pour moi c'est une langue étrangère, je ne comprends pas le tiers de ce qui marqué (dans les exemples de l'aide en ligne, par exemple)... Et puis je ne peux pas copier-coller ces exemples, ils n'ont rien à voir avec mon projet...
Voilà, donc je refais appel à vos connaissances ; je ne demande justement qu'à comprendre cette langue !!! Si jamais quelqu'un pouvait écrire des lignes de code, DU CONCRET quoi !!! Ca serait vraiment génial de votre part...
Comme je l'ai écrit dans mon premier message, j'aimerai afficher les données dans une ListBox et d'autres dans des TextBox... Mais les exemples ne me disent rien là-dessus... De même, dans ta première réponse Casy, tu marques "Il ne te reste plus qu'à stocker ou utiliser ces informations, et
recommencer avec chacune des lignes du fichier, obtenant chaque fois un
tableau de même structure." Je suis totalement d'accord... mais concretement, je suis incapable de faire tout ca...et même de faire ce que tu marquais avant
Merci d'avance pour vos futures réponses et.. même si je n'ai pas de nouvelles réponses pour mon projet, encore une fois merci pour l'aide que vous fournissez aux débutants comme moi
3

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

Posez votre question
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011
5 janv. 2008 à 14:59
Ah j'oubliai, pour les données, C juste un pti tableau excel, enregistré au format .txt
Il y a des ";" ou des espaces je ne sais plus.. Mais ca j'ai compris il suffit de changer le séparateur par " ".... Voilà, c'est donc juste un petit .txt avec 10 lignes et 3 variables pour chacun...
Par contrejmfmarques, je tiens à utiliser Split, et non pas "random" et "Get" comme tu me le suggérais... à moins que ca va ensemble... euh bon bref.. comme vous le voyez, je suis pas mal pommé....! Donc une nouvelle fois, merci pour vos réponses qui seront les bienvenues..
3
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011
6 janv. 2008 à 19:33
J'ai passé plusieurs heures là-dessus.... je n'ai toujours pas de solution... Si quelqu'un pouvait m'aider !!!!! Merci d'avance...
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
6 janv. 2008 à 20:55
Exemple de code :

Dim lignes As String()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles
Button1.Click

        lignes =  IO.File.ReadAllLines("C:\Dossier\Donnees.txt")

        For i As Integer = 0 To lignes.GetUpperBound(0)
                ListBox1.Items.Add(lignes(i).Split(";")(0))
        Next
End Sub

Private Sub ListBox1_SelectedIndexChanged(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
ListBox1.SelectedIndexChanged
        TextBox1.Text = lignes(ListBox1.SelectedIndex).Split(";")(1)
        TextBox2.Text = lignes(ListBox1.SelectedIndex).Split(";")(2)
End Sub

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
romanosky35 Messages postés 50 Date d'inscription samedi 16 janvier 2010 Statut Membre Dernière intervention 23 juin 2011
6 janv. 2008 à 21:43
Oh mon dieu !!! MERCI CASY !!!!! VRAIMENT MERCI !!!!!!
C génial, ca marche !!! J'en pouvais plus de ce foutu problème avec Split...
Mille fois merci, j'imagine que pour toi ca n'était pas hyper compliqué, mais tu ne peux imaginer à quel point ces quelques lignes de codes vont me rendre service !! Bien sur qu'il y a d'autre manière, bien sur j'aurais pu tout changer, mais j'avais privilégier ce qui me paraissait comme la meilleure option et grace à toi, elle se réalise enfin !!!!!
Vous devez probablement tous halluciner en lisant ce message, mais bon tant pis.. je suis fou de joie et c'est comme ca.
Pour la enième fois : merci pour cette aide (Casy -> you are the best ) et pour le temps en général que vous consacrez aux débutants comme moi.. Merci.
3
Rejoignez-nous