elog29
Messages postés25Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention12 mai 2006
-
20 janv. 2005 à 16:21
elog29
Messages postés25Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention12 mai 2006
-
21 janv. 2005 à 09:17
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.
elog29
Messages postés25Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention12 mai 20061 21 janv. 2005 à 09:17
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
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