Lecture et traitement de fichiers externes

Soyez le premier à donner votre avis sur cette source.

Vue 15 446 fois - Téléchargée 1 704 fois

Description

Traitement de fichiers externes.

Beaucoup demandé, je me suis attelé au traitement de fichiers externe en VB6.
La philosophie de ce programme est de pouvoir lire, et utiliser les données en provenance de fichier extérieurs, en général des fichiers Txt.
Je pars d?un programme du comptabilité que j?utilise quotidiennement, à savoir EBP, et j?exporte de ce programme les écritures et les comptes dans des formats que j?ai défini et en séparant les champs par un # (voir variable séparateur dans le programme) ce qui donne pour les
Ecritures: (7 champs)
04/09/2000#44566#A télécom#1,3#0#FRF#AC
04/09/2000#44566#paget#7,05#0#FRF#AC
05/09/2000#44566#TVA sur autres bien et services#413,6#0#FRF#AC
Etc.
Comptes: (2 champs)
1#COMPTES DE CAPITAUX
101#Capital
1013#Capital
105#Ecarts de réévaluation
Je procède de la même manière pour toutes les années dce qui me donne actuellement 5 fichiers écritures:
2001EC.TXT
2002EC.TXT
??..
2005EC.TXT
Et pour les comptes:
2001CPT.TXT
??
2005CPT.TXT

Lors de mes essais, je me suis aperçu que l?instruction Redim au niveau d?un module, ne peut pas se réinitialisée, donc par conséquent, le Procédure ImportFichier, pouvait lire un seul fichier 2001ec.t xt mais refusait de traiter le suivant . J?ai donc opté pour la création d?un fichier texte temporaire qui contient tous les fichiers à lire , traiter ce fichier par la procédure NombreDeLigne puis par la procédure ImportFichier et après traitement des données le supprimer.
En résumé:

1. Je créer un fichier temporaire dans lequel je mets tous mes fichiers à lire:
Public Sub CréationFichierTemporaire(2001ec.txt) ?procédure générale ?
2.J e détermine le nombre de ligne de ce fichier
Public Sub NombreDeLigne(temporaires.txt) ?procédure générale?
3. Je traite chaque ligne et les stocke dans un tableau à 2 dimensions
Public Sub ImportFichier(temporaire.txt) ?procédure générale?

Je traite les informations du tableau en interne
Je détruis le fichier temporaire en interne

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 10 septembre 2003
Statut
Membre
Dernière intervention
5 juillet 2006

Pour une extraction de données avec un champ séparateur, il existe une fonction sous VB qui permet de le faire automatiquement. Cela évite de tester caractère par caractère ou d'utiliser les fonctions de recherches dans une chaine. La fonction en question est : Split()
Elle renvoie un tableau de données (en format chaine).
De plus, j'utilise personnellement la fonction FileSystemObject pour la lecture des fichiers, plus riche que Open ? For

Voici quelques lignes de codes :

Dim fso As Scripting.FileSystemObject
Dim Fic_stream As Scripting.TextStream
Dim valeur_fic As String
Dim tab_Valeur_Fic() As String

Set fso = New Scripting.FileSystemObject
' ouverture du fichier
Set Fic_stream = fso.OpenTextFile(chemin_Fichier,ForReading, False)

Do While Fic_stream.AtEndOfStream <> True
valeur_fic = Fic_stream.ReadLine
' récupération de la ligne en cours dans le tableau
tab_Valeur_Fic = Split(valeur_fic, vbTab, -1, BinaryCompare)
' valeur des champs :
tab_Valeur_Fic(0)
tab_Valeur_Fic(1)
tab_Valeur_Fic(n)
Loop
' fermeture du fichier
Fic_stream.Close
set Fic_stream = nothing
Messages postés
8
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
20 février 2006

ATTENTION ERREUR DE CONCEPTION DANS LA PROCEDURE CréerFichierTemporaire. CORRECTIF DEMAIN OU APPRES DEMAIN.En résumé, le dernier fichier lu écrase tout ce qui contient le fichier texte Temporaires.txt, utilisez la procédure classique open en utilisant Append et non Output.
Mille excuses
Joël
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Redim ne peut redimensionner que la dimension la plus à droite : il suffit donc d'inverser l'ordre des deux dimensions, et tu pourras redimensionner la plus à droite.
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
Désolé, fourni un exemple complet ou je n'essaierai pas... ni personne d'autre d'ailleurs.
Par ailleurs, j'ai vu appelé un fichier .mdb dans le code
Messages postés
8
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
20 février 2006

En effet, le zip ne contient pas tout, mais seulement les fichiers intéressants. En fait il suffit de passer ton fichier texte en suivant la logique que je donne (1/2/3 dans le commentaire du début) et tu récupères les données dans un tableau ApiQuelchamp que tu peux facilement lier à une Msflexigrid par exemple ou remplir un RichTextbox.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.