7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006
-
21 déc. 2005 à 19:04
7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006
-
22 déc. 2005 à 12:42
Bonjour à tous,
voila j'ai un dossier contenant des centaines de fichiers .txt , dans chacun d'eux il y a une ligne nommée "id_menu=quelque chose" (sans les guillemets)
Donc "id_menu" est toujours le même pour chaque fichier .txt et le "quelque chose " change a chaque fois, je désire donc automatiser en VBA l'import de cette ligne dans une table ACCESS avec :
champ1 : le nom du fichier .txt
champ2 : le "quelque chose"
j'ai pas mal cherché les imports des fichiers mais ceci :
Sub import()
Dim Fic As String
Fic = Dir("C:\66\*.txt")
Do While Fic <> ""
DoCmd.TransferText acImportDelim, "spec", "ma_table", "C:\66" & Fic
Fic = Dir
Loop
End Sub
(dans spec j'indique la specification d'import de séparateur de champ par: =)
renvoie tout le contenu de tous les fichiers (dieu que c long), j'ai bien un resultat apres a l'aide d'une requète sur ma table de tous les champs nommés "id_menu" mais je voudrais appliquer le filtre dès l'import.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 déc. 2005 à 19:56
Salut
"le filtre dès l'import" : je vois pas trop
Et il y a quoi dans ta DoCmd.TranferText ?
S'il faut gagner du temps, c'est dans cette fonction .... mais en l'absence d'info ...
- Ouvrir le fichier
- Lire chaque ligne du fichier jusqu'à trouver la ligne qui t'intéresse
- Ensuite, découper la ligne pour en extraire tes deux champs
- Abandonner la lecture de la fin du fichier (si une seule ligne "id_menu" par fichier)
- Fermer le fichier
- Insérer ces données dans la table
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006 22 déc. 2005 à 01:04
salut,
alors merci de me donner une piste, la structure :
- Ouvrir le fichier
- Lire chaque ligne du fichier jusqu'à trouver la ligne qui t'intéresse
- Ensuite, découper la ligne pour en extraire tes deux champs
- Abandonner la lecture de la fin du fichier (si une seule ligne "id_menu" par fichier)
- Fermer le fichier
- Insérer ces données dans la table
me semble bonne a part qu'il existe plusieurs instances de "id_menu" par fichier.
je vais trouver la traduction de ceci en code
(si vous y arrivez plus vite que moi n'hésitez pas )
merci
Nico
7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006 22 déc. 2005 à 03:39
Alors voila j'ai trouvé une petite variante , j'extrait d'abord tout ce qui m'interesse (id_menuname) de mes fichiers texte dans un seul autre fichier texte (liste.txt) dont j'importerai les données par la suite manuellement :
Sub import()
Fic = Dir("C:\66\*.txt")
Do While Fic <> ""
Open "C:\66" & Fic For Input As #1
Fic = Dir
While Not EOF(1)
Line Input #1, texte
If Left$(texte, 12) = "ID_MENUNAME=" Then
Open "C:\liste.txt" For Output As #2
Print #2, texte
Close #2
End If
Wend
Close #1
Loop
End Sub
et voici le contenu de 2 fichiers texte differents situés dans C:\66\
Absc.txt :
ID_CLARK=For the Single Text
ID_CODENAME=ATC 3
ID_LOCATION=Facilities
ID_MENUNAME=Hypernation >>>>>>>>>> à extraire
ID_NEWSWIRE=For the Single Text
et Decal.txt :
ID_CLARK=Nothing Important
ID_CODENAME=99 Complex
ID_DATETIME=By [99]-RedBeta
ID_LOCATION=
ID_MENUNAME=Complex >>>>>>>>>> à extraire
ID_MISSION_ORDER=For the Single Text
etc
mais dans mon liste.txt ça ne renvoie que le id_menuname du Decal.txt et pas le reste.
de plus j'aimerais avoir le nom du fichier dont la donnée est extraite :
liste.txt :
Absc.txt=ID_MENUNAME=Hypernation
Decal.txt=ID_MENUNAME=Complex
etc..
J'espère que c clair et que j'en demande pas trop.
Nico ( VBnovice)
Vous n’avez pas trouvé la réponse que vous recherchez ?
7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006 22 déc. 2005 à 12:05
Meci pcpt,
ton code marche très bien , seulement il n'ajoute pas le nom du fichier au début mais ce doit être une erreur de syntaxe.
Merci à tous pour votre aide.
Nico
7nico7
Messages postés19Date d'inscriptionmardi 26 octobre 2004StatutMembreDernière intervention30 janvier 2006 22 déc. 2005 à 12:42
Voici le code corrigé :
Private Sub Import()
Dim Fic As String, texte As String
Fic = Dir("C:\66\*.txt")
Do While Fic <> ""
Open "C:\66" & Fic For Input As #1
Do While Not EOF(1)
Line Input #1, texte
If Left$(texte, 12) = "ID_MENUNAME=" Then
Open "C:\liste.txt" For Append As #2
Print #2, Fic + "=" + texte
Close #2
Exit Do
End If
Loop
Close #1
Fic = Dir
Loop
End Sub