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
supprimer seulement le texte d'une ligne [ par Robikatchou ]
Bonjour, Je cherche à effacer le contenu d'une ligne déterminée comme ci dessous, le problème c'est qu'avec ce code, ça efface le contenu texte de la
textbox vers listview en VB6 [ par FOUNI ]
Bonjour les pros Voilà ma question je récupère un texte situé dans le presse papier windows et je le place dans un textbox pour info si l on place
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|