jadawin66
Messages postés1Date d'inscriptionmercredi 10 septembre 2003StatutMembreDerniè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és8Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention20 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és1221Date d'inscriptionjeudi 23 août 2001StatutMembreDerniè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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 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és8Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention20 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 29 janv. 2006 à 23:33
J'aimerai bien essayer mais le zip est incomplet
jvuillaume
Messages postés8Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention20 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és1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 20191 29 janv. 2006 à 20:28
oui je suis curieux de savoir egalement...
ScSami
Messages postés1488Date d'inscriptionmercredi 5 février 2003StatutMembreDernière intervention 3 décembre 200724 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" !?!?!?!?
5 juil. 2006 à 14:18
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
30 janv. 2006 à 22:08
Mille excuses
Joël
30 janv. 2006 à 08:31
30 janv. 2006 à 08:04
Par ailleurs, j'ai vu appelé un fichier .mdb dans le code
29 janv. 2006 à 23:46
29 janv. 2006 à 23:33
29 janv. 2006 à 23:08
Ceci dit, si quelqu'un connaît une méthode pour redimensionner un tableau multi, je suis preneur.
29 janv. 2006 à 20:28
29 janv. 2006 à 20:03