Traitement des fichiers txt sous access

Signaler
Messages postés
25
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2006
-
Messages postés
25
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2006
-
Bonjour,
J'ai développé une application sous vba access qui permet d'importer des fichiers txt dans une nouvelle table. Je sélectionne les fichiers txt à importer à l'aide d'un userform qui me permet de sélectionner le répertoire ou se trouvent les fichiers txt.
Ensuite je traite chaque fichier dans une boucle, importation du fichier et traitement du fichier txt à l'aide de plusieurs requetes (une boucle correspond à 1 fichier).
Mon problème est le suivant: mon prog arrive à traiter environ 5 fichiers, je passe donc 5 fois dans ma boucle et la, message d'erreur (argument non valide) mais le problème c'est qu'il ne s'arrete pas toujours au même endroit dans mon prog, des fois il plante sur l'importation et des fois sur l'éxécution d'une requete et pas toujours sur le même fichier.
Et le pire c'est qu'après je ne peux plus rien faire, je suis obligé de compacter ma base pour pouvoir retravailler dessus.
Si quelqu'un a une solution.....
Merci beaucoup pour votre aide.

2 réponses

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
5
Tu pourrais mettre un extrait du code qui plante stp ?
Messages postés
25
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
12 mai 2006
1
Sub BImportrep_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset


Dim extension() As String
Dim SQL1, SQL2, SQL3, SQL4, SQL5, SQL6, SQL7 As String
Dim tabtemp() As String
Dim tabtemp2 As String
Dim nomtable As String
Dim j As Integer
Dim ws As Workspace
Dim Ref As Reference



Set ws = DBEngine.Workspaces(0)



DoCmd.SetWarnings False


j = 1
nbboucle = importation.ListCount
For i = 1 To nbboucle

Étiquette16.Visible = True
Étiquette16.Caption = "Fichier " & j
Me.Repaint
extension = Split(tabfic(i), ".")
If extension(UBound(extension)) = "txt" Then
Barrep.Value = 0
DoCmd.TransferText acImportDelim, "Spécif_import", "TABIMPORT" & j, tabfic(i), True
SQL1 = "DELETE * FROM TABIMPORT" & j & " WHERE (Telephone) Is Null;"
DoCmd.RunSQL SQL1
SQL2 = "Select Max(TABIMPORT" & j & ".Nom) AS Nom, Max(TABIMPORT" & j & ".Adresse) AS Adresse, Max(TABIMPORT" & j & ".CodePostal) AS CP, Max(TABIMPORT" & j & ".Ville) AS Ville, TABIMPORT" & j & ".Telephone Into TABTEMP" & j & " From TABIMPORT" & j & " Group By TABIMPORT" & j & ".Telephone Order By Max(TABIMPORT" & j & ".Nom);"
DoCmd.RunSQL SQL2

Set db = CurrentDb()
Set rs = db.OpenRecordset("TABTEMP" & j)


Barrep.Max = rs.RecordCount + 2

rs.MoveFirst
Do While Not rs.EOF()
Barrep.Value = Barrep.Value + 1
rs.Edit
If Not IsNull(rs.Fields("Nom").Value) Then
rs.Fields("Nom").Value = Replace(rs.Fields("Nom").Value, "á", " ")
End If
If Not IsNull(rs.Fields("Adresse").Value) Then
rs.Fields("Adresse").Value = Replace(rs.Fields("Adresse").Value, "á", " ")
End If
If Not IsNull(rs.Fields("Telephone").Value) Then
rs.Fields("Telephone").Value = Replace(rs.Fields("Telephone").Value, "á", " ")
rs.Fields("Telephone").Value = Replace(rs.Fields("Telephone").Value, "+33 (", "0")
End If
rs.Update
rs.MoveNext
Loop
rs.Close

Set db = Nothing
Set rs = Nothing


tabtemp = Split(tabfic(i), "")
tabtemp2 = tabtemp(UBound(tabtemp))
nomtable = Mid(tabtemp2, 13, 2)
SQL3 = "DROP TABLE TABIMPORT" & j & ";"
DoCmd.RunSQL SQL3

SQL4 = "INSERT INTO LISTETEMP SELECT * FROM TABTEMP" & j & ";"
DoCmd.RunSQL SQL4


SQL5 = "DROP TABLE TABTEMP" & j & ";"
DoCmd.RunSQL SQL5

j = j + 1
End If
SQL6 = "Select Max(LISTETEMP.Nom) AS Nom, Max(LISTETEMP.Adresse) AS Adresse, Max(LISTETEMP.CP) AS CP, Max(LISTETEMP.Ville) AS Ville, LISTETEMP.Telephone Into " & nomtable & " From LISTETEMP Group By LISTETEMP.Telephone Order By Max(LISTETEMP.Nom);"
DoCmd.RunSQL SQL6


SQL7 = "DELETE LISTETEMP.* FROM LISTETEMP;"
DoCmd.RunSQL SQL7


Étiquette16.Visible = False
Next
DoCmd.Close
End Sub