Accueil > Forum > > > > Lire des mots d'un TXT spécial
Lire des mots d'un TXT spécial
jeudi 23 décembre 2004 à 20:56:25 |
Lire des mots d'un TXT spécial

danielgrd
|
Bonjour, J'ai reçu ce code il y a plusieurs mois sur VBFrance... Maintenant que je suis près a l'utiliser je me rend compte que je n'arrive pas a bien le comprendre... Ce code sert à afficher des mots contenues dans un fichier txt (c:\b.txt) et les transfèrer dans un label séparément... Le fichier c:\b.txt est spécial... Chaque ligne contient plusieurs mots séparés par un signe(#). Exemple : mot1#mot2#mot3#mot4#mot5#"" mot6#mot7#mot8#mot9#mot10#"" etc... Mes questions sont : 1 - Il y a t-il plus simple que ce code? 2 - Si non, comment je fais pour afficher le 3e mot de la 1e ligne? Et le 4e de la 1e ligne etc...? Ainsi que le 1er mot de la 2e ligne et le 2e de la 2e ligne? etc... Parceque moi présentement avec ce code je ne peux qu'afficher les deux premiers mots de la 1e ligne... Pour les autres j'ai aucune idée de comment je pourrais les afficher... 3 - Pourquoi faut-il mettre un "" à la fin de chaque ligne? Est-ce obligatoire? MERCI D'AVANCE! ---------------------------------------------------------------------------------- Dim Texte As String Dim Numfile As Integer Dim FirstHeader As Long Dim NextHeader As Long 'Ouvre le fichier et le charge en mémoire vive Numfile = FreeFile Open "c:\b.txt" For Input As Numfile Texte = Input(LOF(Numfile), Numfile) Close Numfile 'Maintenant relevons les 2 premiers 'champs de chaque ligne FirstHeader = InStr(1, Texte, "#") '1er champs LABEL1.Caption = Left$(Texte, FirstHeader - 1) FirstHeader = FirstHeader + Len(",") NextHeader = InStr(FirstHeader, Texte, "#") '2eme champs LABEL2.Caption = _ Mid$(Texte, FirstHeader, NextHeader - FirstHeader) End Sub --------------------------------------------------------------------------------------
|
|
jeudi 23 décembre 2004 à 21:02:45 |
Re : Lire des mots d'un TXT spécial

danielgrd
|
Oups, j'ai glissé une petite erreur dans le code... À la sixième ligne en partant de la fin vous voyez une virgule entre parenthèse... Et bien il s'agirait plutot de ("#") et non pas de (",")
J'attend vos réponses!!!
|
|
vendredi 24 décembre 2004 à 00:22:59 |
Re : Lire des mots d'un TXT spécial

crenaud76
|
Si je lit bien le code, seul les 2er mot de chaque ligne t'intéresse ?? On peut fair eun peu plus simple effectivement (et en plus içi il te manque une boucle pour tourner sur toutes les lignes du fichier. Dim Texte As String, Numfile As Integer,Mots() as string,Lignes() as string,i as long
Numfile = FreeFile Open "c:\b.txt" For Input As Numfile Texte = Input(LOF(Numfile), Numfile) Close Numfile Lignes = split(text,vbcrlf) 'Eclate le fichier en ligne dans un tableau For i = 0 to ubound(lignes) ' De la 1ere ligne à la dernière mots = split(lignes(i),"#") ' Eclate la ligne en mots dans un tab Msgbox Mots(0) ' 1er mot car tableau d'indice 0 Msgbox Motss(1) ' 2eme mot car tableau d'indice 0 Next
|
En remplacant bien sur les 2 appels à MsgBox par ce que tu veux faire des mots N°1 et N°2 Christophe R.
|
|
vendredi 24 décembre 2004 à 01:32:44 |
Re : Lire des mots d'un TXT spécial

danielgrd
|
Merci de ta réponse...
Premièrement je ne veux pas que lire les deux premiers mots mais plutot tout les mots des toutes les lignes...
Je veux que chacuns des mots soient égalent au caption d'un label (un label par mot)...
J'ai donc essayé ta source et je me suis permis d'enlever le 2e 's' de l'avant dernière ligne ... Mais le code ne fonctionne pas plus...
Si je laisse les MsgBox rien ne se passe... Et si je les changent pour faire afficher dans un label cela ne fonctionne pas plus... Rien ne se passe!
J'espère que tu me répondra!
Merci d'avance
|
|
vendredi 24 décembre 2004 à 03:13:54 |
Re : Lire des mots d'un TXT spécial

Gobillot
|
si j'ai bien compris tu veux un mot par Label. Le mieux c'est de faire un groupe de contrôle, comme je sais pas combien il y aura de mots autant les créer dynamiquement au fur et à mesure, il faut donc que tu gardes le Label1 et que tu mettes sa propriété Index à 1, celui-ci servira de référence pour créer les autres. Le "" à la fin de chaque Ligne n'est pas nécessaire, mais est-ce qu'il y a une vrai fin de Ligne (chr$(13) & chr$(10) ce qui expliquerait pourquoi le code de crenaud76 ne marchait pas. La correction Len(",") en Len("#") n'était pas nécessaire, la Longueur d'un caractère sera toujours égale à 1. Private Sub Command1_Click() Dim Texte As String Dim Lg As Long Dim i As Integer Dim x As Integer Dim n As Integer Dim posx As Integer Dim posy As Integer Dim dx As Integer Dim dy As Integer ' Lecture du Fichier Open "c:\b.txt" For Binary As #1 Lg = LOF(1): Texte = Space$(Lg) Get #1, , Texte Close #1 ' position de départ posx = Label1(1).Left posy = Label1(1).Top ' définir l'intervalle entre 2 Labels dx = 100: dy = 100 For i = 1 To Lg x = InStr(i, Texte, "#") If x > 0 Then n = n + 1 If n > 1 Then 'création d'un nouveau Label Load Label1(n) Label1(n).Left = posx Label1(n).Top = posy Label1(n).Visible = True End If posx = posx + Label1(1).Width + dx ' changement de Ligne tous les 5 Labels If n Mod 5 = 0 Then posx = Label1(1).Left posy = posy + Label1(1).Height + dy End If Label1(n) = Mid$(Texte, i, x - i) If Mid$(Texte, x + 1, 2) = Chr$(34) & Chr$(34) Then x = x + 2 If Mid$(Texte, x + 1, 2) = vbCrLf Then x = x + 2 i = x End If Next End Sub
| Daniel
|
|
vendredi 24 décembre 2004 à 09:20:17 |
Re : Lire des mots d'un TXT spécial

crenaud76
|
correction : Dim Texte As String, Numfile As Integer,Mots() as string,Lignes() as string,i as long
Numfile = FreeFile Open "c:\b.txt" For Input As Numfile Texte = Input(LOF(Numfile), Numfile) Close Numfile Lignes = split(texte,vbcrlf) 'Eclate le fichier en ligne dans un tableau For i = 0 to ubound(lignes) ' De la 1ere ligne à la dernière mots = split(lignes(i),"#") ' Eclate la ligne en mots dans un tab label1.caption = Mots(0) ' 1er mot car tableau d'indice 0 label2.caption = Mots(1) ' 2eme mot car tableau d'indice 0 label3.caption = Mots(2) ' 3eme mot car tableau d'indice 0 label4.caption = Mots(3) ' 4eme mot car tableau d'indice 0 ' etc ... etc ... Next
|
J'ai corrigé le 's' en trop et ajouté un 'e' à 'Texte' dans la ligne "Lignes = split(texte,vbcrlf)" Au passage, pour éviter ce genre de désagrément, je te conseille de rajouter "Option Explicit" tout en haut de tous tes modules, cela évitera qu'une erreur de frappe ne bogue ton code ... Christophe R.
|
|
vendredi 24 décembre 2004 à 22:12:04 |
Re : Lire des mots d'un TXT spécial

danielgrd
|
Bonjour,
Merci de vos réponses crenaud76 et Gobillot!
Gobillot : Je n'ai pas testé ton code Gobillot... Il semble excellent mais le problème c'est que tous mes label portent des nom différends (lblNom,lblCond,lblNum,lblYe,etc...) et je tiens a garder ces noms (J'en ai BeAuCouP!) Il y a-t-il un autre moyen me permettant de garder mes noms de labels???????????
crenaud76 : J'ai testé ton code... Étrangement il ne fonctionne toujours pas. Maintenant je ne suis capable d'ouvrir le programme... Cette erreur survient : Erreur d'exécution 9 Indice en dehors de la plage Et là il surligne en jaune : lblNum.Caption = Mots(0) ' 1er mot car tableau d'indice 0
J'attend vos réponses....!!! :0)
Merci d'avance
|
|
vendredi 24 décembre 2004 à 23:41:04 |
Re : Lire des mots d'un TXT spécial

Gobillot
|
Réponse acceptée !
je comprends pas pourquoi ça te fait une erreur sur Mots(0) ??? j'ai modifier ma méthode, mais comme elle est basée sur le même principe que crenaud76, il faudrait trouver pourquoi cette erreur sur Mot(0) pour l'utiliser: lblNom = Table (1,1) '1ére Ligne, 1er Mot lblCond = Table(2,3) '2éme Ligne, 3éme Mot lblNum = Table(4,5) '4éme Ligne, 5éme Mot Option Explicit
Option Base 0
Dim Table() As String
Private Sub Form_Load() Dim Texte As String Dim Lignes() As String Dim Mots() As String Dim i As Integer Dim j As Integer Dim x As Integer Dim y As Integer Open "c:\b.txt" For Binary As #1 Texte = Space$(LOF(1)) Get #1, , Texte Close #1 Lignes = Split(Texte, vbCrLf) x = UBound(Lignes): y = 1 ReDim Table(x, y) For i = 0 To x - 1 Mots = Split(Lignes(i), "#") If UBound(Mots) > y Then y = UBound(Mots) ReDim Preserve Table(x, y) End If For j = 0 To UBound(Mots) - 1 Table(i + 1, j + 1) = Mots(j) Next Next End Sub
| Daniel
|
|
samedi 25 décembre 2004 à 22:25:44 |
Re : Lire des mots d'un TXT spécial

crenaud76
|
T'aurais pas un "Option Base 1" en haut de ton module ?? Si oui, il faut incrémenter d'un les indices des mots. Mots(0) deviendra Mots(1) pour le 1er mot, Mots(1) deviendra Mots(2) pour le 2eme mot, etc .... Ou alors tu laisses les indices tel quel et tu supprimes le "Option Base 1" (ou tu mets "Option Base 0", mais c'est la valeur par défaut, donc ...)
Christophe R.
|
|
lundi 27 décembre 2004 à 16:58:48 |
Re : Lire des mots d'un TXT spécial

espadon2
|
Réponse acceptée !
Salut a tous ...voila une solution
les "" a la fin du ficheir ne serve a rien ici
Attention , il faut rajouter une reference au projet :"Microsoft Scripting Runtime"
Function GiveMots(aPathFile As String, aLine As Integer, aPos As Integer) As String Dim fso As New FileSystemObject Dim myTxt As TextStream ' le fichier text contenant les lignes de mots Dim myLine As String ' la ligne Dim myTabLine() As String ' le tableau resulat de la decoupe de la ligne ' ouverture du fichier texte passé en parametre Set myTxt = fso.OpenTextFile(aPathFile, ForReading) ' on boucle jusque l'on arrive a la hauteur de la ligne ' on s 'arrete a la ligne precedente , cela explique aline - 1 For i = 1 To aLine - 1 ' si on est arrivé a a la fin du fichier If myTxt.AtEndOfStream = True Then ' il n' a pas autant de lignes .... GiveMots = "!#ERROR#!" Exit For Else myTxt.SkipLine End If Next i If GiveMots = "" Then ' a ce niveau on est positionné sur la ligne recherher "aLine" ' On la recupere dans la variable myLine myLine = myTxt.ReadLine ' on la decoupe en fonction # myTabLine = Split(myLine, "#") 'A ce niveau on a recuperé un tableau contenant tous les mots de la ligne recherchées ' si la position existe ... aPos - 1 car le tableau commence a ' l 'indice zero ... Ubound = plus grand indice du tableau If UBound(myTabLine) > aPos - 1 Then ' return du mots a la position demande .. GiveMots = myTabLine(aPos - 1) Else ' sinon il n' y as pas de mots a cette position GiveMots = "!#ERROR#!" End If End If End Function
Exemple utilsation : Dim monMots As String monMots = GiveMots(App.Path & "\b.txt",2, 4) MsgBox monMots
=> Affichage de " mot10 "
Si ca peut aider des personnes ... salut bonnes fetes ...
espadon
|
|
Cette discussion est classée dans : ligne, texte, txt, numfile, firstheader
Répondre à ce message
Sujets en rapport avec ce message
supprimer UNE ligne dans un fichier txt [ par vince ]
mon fichier texte contient par exemple 3 lignes de texte. Je souhaite supprimer la 1ere et en rajouter une à la fin (comme une mémoire déroulante).Mer
Probleme avec les aut de ligne et retout eu chariot [ par RMOINAS ]
sltAlors voilà mon probleme.bui = Inet1.OpenURL("http://r.moinas.free.fr/news2.txt")Open "c:/news3.txt" For Output As #1Write #1, buiClose #1Open "c:/
retour à la ligne dans un .txt [ par mauris ]
Salut à tous,voilà j'ai un bouton pour enregistrer ma textbox dans un .txt :Private Sub Command7_Click()Open App.Path & "\" & Text22 & ".txt" For Outp
pb de lecteur ligne par ligne trop rapide [ par Antony ]
bonjour tout le monde !voilà j'ai un fichier texte.txt que j'ouvre ligne par ligne et que je met dans une list box comme ceci :Open "c:\Program Files\
fin d un fichier texte ds un .txt [ par krousty ]
bonjour , je voulais savoir si il était normal que lorsque j envoie une chaine de caractere dans un fichier .txt il me rejaouté toujours 2 ligne a la
fin de ligne dans un fichier texte [ par morcelet ]
Bonjour a tous. voila j'utilise ce system pour lire un fichier texte : FirstHeader = 0 FirstHeader = FirstHeader + 7
modifier fichier texte [ par maxsecurite2 ]
Bonjour,J'aimerais savoir comment faire pour faire une petite gymnastique avec un fichier txt je vous explique ; j'ai un fichier (config.txt) qui cont
PB Checkedlistbox et texte d'item trop long [ par etiNmus ]
bonjour à tous, sous VB2008, Quelqu'un connaîtrait-il le moyen de forcer un retour à la ligne (ou un affichage "multiline") d'un item dans un checked
Copier une partie d'un fichier texte [ par psgkiki ]
Bonjour Je suis bloqué sur ma macro Excel qui permet de recopier des données d'un fichier TXT dans un classeur EXCEL. J'aimerai cependant recopier q
lire un fichier texte ligne pas ligne ? [ par ult1m4tum ]
Bonjour a tous ! Voici mon probleme : J'ai créé un petit soft qui est censé aller chercher les lignes d'un fichier texte et les afficher unes par un
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|