Accueil > Forum > > > > Mettre à jour une zone dans un fichier texte
Mettre à jour une zone dans un fichier texte
vendredi 20 juillet 2007 à 23:25:45 |
Mettre à jour une zone dans un fichier texte

Marianne108
|
bonjour j'utilise un fichier texte comme source de données pour fusinner un document Word le fichier texte à un enregistrement d'entête et des lignes de données comme suit : Nom Prenom Date naissance N° facture Montant_en_chiffre Montant_en_lettre Toto Rémi 12/04/1985 12345 200 ??? Zoro Martin 04/02/1975 65831 300 ??? --- --- ---- --- --- ??? je voudrais faire une lecture séquensiel, récupérer la position du Montant_en_Chiffre ici colonne 5, données 200 et mettre à jour Montant_en _lettre ici colonne 6, données = deux cent et ainsi de suite A noter que les deux colonnes concernées sont dans le cas réél en colonne 60 et 80 à partir le la colonne 1 (Nom) Comment écrire cela sous vb6?
|
|
samedi 21 juillet 2007 à 01:30:43 |
Re : Mettre à jour une zone dans un fichier texte

jack
|
Salut On suppose que chaque donnée est séparée par des tabulations (ou largeur des données fixe) ? De toute façon, c'est la même technique que pour lire des fichiers CSV. Cherche donc CSV parmi les codes du site.
Si les largeurs des données sont fixes, tu peux lire et écrire en mode sequentiel : - Crée un type propre à la structure de ta ligne : Private Type monTypeDeLigne Dim Nom As String * 10 Dim Prénom As String * 10 ... Dim Montant_en_chiffre As String * 10 ... Dim CaractèreDeFinDeLigne As String * 2 ' = le vbCrLf à la fin de la ligne End Type Dim maLigne As monTypeDeLigne - Ensuite, regarde du côté de l'instruction Open en mode d'accès séquentiel : ff = FreeFile Open "monFichier.txt" For Random Access Read Write As #ff Len = Len(maLigne) Do While Not EOF(ff) Get #ff, NoLigne, maLigne ' ton traitement ici pour modifier maLigne.Montant_en_chiffre Put #ff, NoLigne, maLigne Loop Close #ff L'avantage des fichiers séquentiels, c'est que tu peux demander à lire ou écrire des 'fiches' dans n'importe quel ordre.
Si tes données ne sont pas structurées, tu ne pourras pas écrire par dessus la donnée. Il va te falloir lire une ligne du fichier, la traiter (ou pas), puis l'écrire dans un autre fichier. Après traitement, tu peux supprimer l'original et renommer le nouveau fichier comme l'ancien.
Vala Jack, MVP VB NB : Je ne répondrai pas aux messages privés
|
|
samedi 21 juillet 2007 à 14:51:10 |
Re : Mettre à jour une zone dans un fichier texte

Marianne108
|
bonjour je te remercie tout d'abord pour ta reponse qui est certainement bonne sauf que j'ai un problème par rapport à mon fichier Montant.txt lorsque le programme exécute la ligne Get #ff, NoLigne, MyRecord le NoLigne est vide d'ou plantae erreur 63 A noter que pour ce test j'ai crée manuellement un fichier .xls avec trois zones VS01, VS02 VS03 ensuite j'ai enregistré ce fichier sous .txt 4 D 200 le séparateur des zones étant la tabulation et pour les enregitrements entrée
Voici mon source
Private Type Record VS01 As String * 10 VS02 As String * 10 VS03 As String * 10 End Type Sub Conversion() Dim MyRecord As Record, NoLigne
Dim sValueLettres As String Dim CaractèreDeFinDeLigne As String * 2
ff = FreeFile Open "C:\temp\Montant.txt" For Random Access Read Write As #ff Len = Len(MyRecord) Do While Not EOF(ff) Get #ff, NoLigne, MyRecord ' traitement If VS03 <> "" Then txt_Nb_Text = VS03 Call ChiffresLettres_F((CDbl(txt_Nb_Text)), sValueLettres) Put #ff, NoLigne, MyRecord End If
Loop Close #ff End Sub
Merci pour ton aide
MM
|
|
samedi 21 juillet 2007 à 21:16:51 |
Re : Mettre à jour une zone dans un fichier texte

MPi
|
Essaie comme ceci. L'index de ligne (NoLigne) doit être supérieur à 0
Sub Conversion() Dim MyRecord As Record, NoLigne As Long, FF As Integer Dim sValueLettres As String Dim CaractèreDeFinDeLigne As String * 2 FF = FreeFile Open "C:\temp\Montant.txt" For Random As #FF Len = Len(MyRecord) Do While Not EOF(FF) NoLigne = NoLigne + 1 'doit être > 0 Get #FF, NoLigne, MyRecord ' traitement If MyRecord.VS03 <> "" Then MsgBox MyRecord.VS01 & vbCrLf & MyRecord.VS02 & vbCrLf & MyRecord.VS03 ' txt_Nb_Text = MyRecord.VS03 ' Call ChiffresLettres_F((CDbl(txt_Nb_Text)), sValueLettres) ' ' Put #FF, NoLigne, MyRecord End If Loop Close #FF End Sub
MPi
|
|
samedi 21 juillet 2007 à 23:03:04 |
Re : Mettre à jour une zone dans un fichier texte

Marianne108
|
Merci Bcp pour ton aide, ça avance bien mais désolé de t'ennuyer un peu plus car je récupére bien des données mais elle sont décalées ainsi mon fichier et comme suit ( séparateur tabulation pour les zones et entrée pour les enregistrements) VS01 VS02 VS03 4 E 1235,12 15 D 2580,56
lorque j'exécute le source je récupère dans MyRecord.VS01="VS01VS02" MyRecord.VS02="VS03 4E" MyRecord.VS03="1235,12 1" Alors que je veux récupérer Enregistrement 1 MyRecord.VS01="VS01" MyRecord.VS02="VS02" MyRecord.VS03="VS03" Enregistrement 2 MyRecord.VS01="4" MyRecord.VS02="E" MyRecord.VS03="1235,12" Enregistrement 3 MyRecord.VS01="15" MyRecord.VS02="D" MyRecord.VS03="2580,56"
MM
|
|
dimanche 22 juillet 2007 à 01:52:31 |
Re : Mettre à jour une zone dans un fichier texte

MPi
|
La méthode Random pour la lecture de fichier est intéressante lorsqu'on a des données ayant des espacements fixes. C'est à ça que sert le Type. Dans ton cas, le Type était de 3 données de 10 caractères de long.
Par contre, le fichier que tu essaies de lire ne doit pas avoir 3 données de 10 caractères. Ce sont simplement 3 variables de longueur non définie. Il serait préférable d'utiliser alors
Open "MonFichier" For Input as #ff Ensuite utiliser Line Input pour lire une ligne Puis utiliser Split sur cette ligne avec vbTab comme délimiteur Le tableau généré par Split contiendra alors les 3 (ou plus) valeurs de chaque ligne
Est-ce que tu comprends mon charabia ?
MPi
|
|
dimanche 22 juillet 2007 à 11:33:01 |
Re : Mettre à jour une zone dans un fichier texte

Marianne108
|
Bonjour Pour ton information c'est plutôt moi qui suit Charabia et grace à tes informations j'ai pu en tout cas avancer dans la compréhension du traitement de fichier texte et je t'en remercie bcp. voici ce que j'ai écrit mais je ne sais pas aller plus loin FF = FreeFile Open "C:\temp\Montant.txt" For Input As #FF Do While Not EOF(FF) Line Input #FF, textline tabul = Split(textline, vbTab) quand j'exécute ce source j'ai dans texteline ce qui suit "VS01*VS02*vs03*VS04" *=correspond ici à la tabulation "4*E*1235,12*Durand" "15*D*2580,56*Dupont" l'idéee est de savoir comment récupérer la position de VS03 entre deux tabulations afin de la traiter. ce que je sais dire mais pas écrire en VB
J'ai volontairement ajouter une zone dans mon fichier VS04 pour pouvoir avoir VS03entre deux tabulations
Et merci bcp
MM
|
|
dimanche 22 juillet 2007 à 15:07:30 |
Re : Mettre à jour une zone dans un fichier texte

MPi
|
L'ajout de VS04 n'est pas nécessaire. Lorsque tu écris tabul = Split(textline, vbTab) ' en espérant que tabul est un tableau ... tabul() celui-ci contiendra tabul(0) => VS01 tabul(1) => VS02 tabul(2) => VS03
............... tant qu'il y aura des tabulations sur cette ligne
Tu peux donc mettre une condition sur tabul(2) If CDbl(tabul(2)) > 1500 then .... ou If tabul(2) <> "" then
Bonne chance
MPi
|
|
dimanche 22 juillet 2007 à 15:46:24 |
Re : Mettre à jour une zone dans un fichier texte

Marianne108
|
Réponse acceptée !
merci bcp le problème est régle, t'es un crack finalement je lis le fichier Montant.txt et j'écris dans un autre fichier Montant1.txt
dans montant.txt j'avais VS01 VS02 VS03 4 E 1235,12 15 D 2580,56
je retrouve dans montant1.txt VS01 VS02 VS03 4 E mille deux cents trente cinq Euros et douze Centimes 15 D deux mille cinq cents quatre-vingt Euros et cinquante six Centimes
comme suit :
Sub Conversion() Dim textline Dim Zone As String Dim sValueLettre As String
Const ForReading = 1 Const ForWriting = 2 Const ForAppending = 8
Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") Dim oTxtFile Set oTxtFile = oFSO.OpenTextFile("C:\temp\Montant1.txt", ForWriting, True) FF = FreeFile
Open "C:\temp\Montant.txt" For Input As #FF Do While Not EOF(FF) Line Input #FF, textline tabul = Split(textline, vbTab) MyPos = InStr(1, tabul(2), "VS") If MyPos <> 1 Then txt_Nb_Text = tabul(2)
' traitement chiffres en lettres Call ChiffresLettres_F((CDbl(txt_Nb_Text)), sValueLettre) tabul(2) = sValueLettre End If Zone = tabul(0) & vbTab & tabul(1) & vbTab & tabul(2) oTxtFile.WriteLine Zone Loop
Close #FF
End Sub
|
|
Cette discussion est classée dans : fichier, texte, données, colonne, montant
Répondre à ce message
Sujets en rapport avec ce message
Import de fichier texte vers Excel [ par nico_fip1 ]
Bonjour, Une application en C++ me génère un fichier texte avec séparateur (actuellement ';' mais ça peut être changé). Je souhaite qu'une macro d'un
Récupérer données d'une textox et transmettre dans un fichier texte [ par Xini28 ]
Salut à tous,J'essaie de récupérer les données que je rentre dans une textbox et le transmettre dans un fichier texte normal. Juste en entrant les don
Afficher les données d'un fichier texte [ par davidguillon ]
B'jour!Je débute en VB et ne parviens pas à trouver ce que je souhaite dans l'aide du forum...J'ai un formulaire dans mon application dans lequel l'ut
Liér les données d'une application vb avec un fichier excel [ par spootnic22 ]
salut les experts,Je veux inserer les données des zones de texte d'une application faite par le visual basic dans un fichier excel par exemple: j'ai u
Diagramme rosace [ par plume_12 ]
Bonjour,Je dois faire un petit programme avec Visual Basic, mais étant débutante, j'ai vraiment du mal !Mon travail consiste à récupérer des données e
Lire un fichier texte et récupérer son contenu dans excel [ par olivier857 ]
Bonjour à tous,Je me pose 2 questions :1ère :Comment lire un Fichier Texte ligne par ligne et le mettre dans une Feuille Excel ?2ème :Comment gérer un
Recherche d'une valeur dans un fichier texte [ par gramlinz60 ]
Bonsoir à tous,J'ai un petit problème :Je possède un fichier Excel avec 60000 lignes, un fichier texte avec 200 000 lignes.je souhaiterais, pôur chaqu
extraction données d'un fichier texte [ par TM20 ]
Bonjour à tous et toutes,voila, je sollicite l'aide de toute personne qui veut bien sur m'aider,je cherche à lire un fichier csv sans excel, c'est à d
Ecrire dans un fichier texte sur une colonne précise [ par nico2nico65 ]
Bonjour, Je dois réaliser un fichier texte à partir d'informations saisies dans Excel. Ce fichier texte me permet ensuite d'importer les factures da
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
|