LECTURE ET TRAITEMENT DE FICHIERS EXTERNES

ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 - 29 janv. 2006 à 20:03
jadawin66 Messages postés 1 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 5 juillet 2006 - 5 juil. 2006 à 14:18
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35798-lecture-et-traitement-de-fichiers-externes

jadawin66 Messages postés 1 Date d'inscription mercredi 10 septembre 2003 Statut Membre Dernière intervention 5 juillet 2006
5 juil. 2006 à 14:18
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
jvuillaume Messages postés 8 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 20 février 2006
30 janv. 2006 à 22:08
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
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
30 janv. 2006 à 08:31
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.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
30 janv. 2006 à 08:04
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
jvuillaume Messages postés 8 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 20 février 2006
29 janv. 2006 à 23:46
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.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
29 janv. 2006 à 23:33
J'aimerai bien essayer mais le zip est incomplet
jvuillaume Messages postés 8 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 20 février 2006
29 janv. 2006 à 23:08
En effet, dans un tableau multidimmension,redim ne peut pas être redimmensionner dans les toutes les dimensions on peut faire redim (100,0) mais pas redim (0,0). C'est pourquoi ma procédure ImportFichier ne peut fonctionner que sur un seul cycle d'où la nécessité de créer un fichier temporaire ou ne l'utiliser qu'une fois. Sinon, il faut fermer le prog et recommencer la procédure. Suis-je assez clair??. Dans mon application je ne peux donc pas traiter les écritures et les comptes, je dois traiter les ecritures, fermer l'appli puis traiter les comptes.Le seul moyen de contoutner ce pb serait de traiter ImportFichier au niveau du formulaire, fermer le formulaire et le réouvrir le formulaire. personnellment je préfère utiliser un module facilement exploitable par toutes les applications.
Ceci dit, si quelqu'un connaît une méthode pour redimensionner un tableau multi, je suis preneur.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
29 janv. 2006 à 20:28
oui je suis curieux de savoir egalement...
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
29 janv. 2006 à 20:03
Qu'entends-tu pas "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" !?!?!?!?