Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1634 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Besoin d'aide pour conversion Access 2003 2007

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide pour conversion Access 2003 2007

n°2026734
fabiencer8​4
Posté le 04-10-2010 à 13:05:53  profilanswer
 

Bonjour a tous,
 
Je viens a vous desepérement car ca fait plus d'une semaine que j'essay de convertir ce code en 2007 car ma fonction "Application.FileSearch" ne fonctionne plus sous 2007...
Il y a bien une solution sous excell pour rajouter cette fonction mais ca ne marche pas sous access.
 
Voici mon code :
 

Code :
  1. Sub import()
  2.        Set fs = Application.FileSearch   ' NE FONCTIONNE PLUS
  3.    
  4.     With fs
  5.    
  6.         .LookIn = "C:\mon dossier"
  7.         .filename = "*.TXT"                                 ' JE RECUPERE MON FICHIER TEXT TOUTE LES 15 MIN IMPORT D'UN FTP
  8.        
  9.         If .Execute(SortBy:=msoSortbyFileName, _
  10.             SortOrder:=msoSortOrderAscending) > 0 Then
  11.                  
  12.                 For i = 1 To .Foundfiles.Count
  13.                 FileCopy .Foundfiles(i), "C:\mon dossier save" & Right(.Foundfiles(i), (Len(.Foundfiles(i)) - InStrRev(.Foundfiles(i), "\" )))     ' SAVE DES FICHIERS
  14.                 DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", .Foundfiles(i), False, ""                     ' IMPORT DANS MA TABLE SUIVANT UN SP2CIFICATION D'IMPORTATION
  15.                 Kill (.Foundfiles(i))
  16.              
  17.          Next i
  18.              Else
  19.                  End If
  20. End With
  21. End Sub


 
MERCI DE VOTRE AIDE CAR LA JE c'est plus quoi faire !!!!!  :??:  
 
j'ai bien essayé avec un dir mais j'arrive pas a l'importater dans ma table existante " FICHIER ORDER"
 
MERCI MERCI D'avance


Message édité par fabiencer84 le 04-10-2010 à 13:44:22
mood
Publicité
Posté le 04-10-2010 à 13:05:53  profilanswer
 

n°2026741
kiki29
Posté le 04-10-2010 à 13:30:03  profilanswer
 

Salut, va jeter un oeil sur http://www.developpez.net/forums/d [...] oundfiles/ sinon via Gog http://www.google.fr/search?hl=fr& [...] =&gs_rfai=


Message édité par kiki29 le 04-10-2010 à 13:33:18
n°2026742
Elmoricq
Modérateur
Posté le 04-10-2010 à 13:30:43  profilanswer
 

TItre modifié : les titres tout en majuscules sont prohibés. Merci de lire les règles de la section.

n°2026743
fabiencer8​4
Posté le 04-10-2010 à 13:41:00  profilanswer
 

Oui justement j'ai vu ce topics mais c'est ultra compliqué et je n'arrive pas a le mettre en action.
 
j'espere trouver un code plus simple comme celui que j'avais sous 2003.
 
Je suis debutant et je ne connais presque pas le vba.

n°2026750
kiki29
Posté le 04-10-2010 à 13:59:51  profilanswer
 

Re, en allant au plus simple ( pas de récursion ) : c'est du VBA mais testé sous Excel


Option Explicit
 
Dim Tableau() As String
 
Sub Tst()
Dim i As Long
    Erase Tableau
    ListeFichiersDansDossier ThisWorkbook.Path, "txt", 0
    For i = LBound(Tableau) To UBound(Tableau)
        Debug.Print i, Tableau(i)
    Next i
End Sub
 
Private Sub ListeFichiersDansDossier(sChemin As String, sExt As String, r As Long)
Dim Fichier As String, sPath As String
 
    Fichier = Dir$(sChemin & "\*." & sExt)
    Do While Len(Fichier) > 0
        ReDim Preserve Tableau(r)
        sPath = sChemin & "\" & Fichier
        Tableau(r) = sPath
        r = r + 1
        Fichier = Dir$()
    Loop
End Sub


en adaptant (sans doute) et insérant  


            For i = 1 To .FoundFiles.Count
                FileCopy .FoundFiles(i), "C:\mon dossier save" & Right(.FoundFiles(i), (Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\" )))      ' SAVE DES FICHIERS
                DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", .FoundFiles(i), False, ""                     ' IMPORT DANS MA TABLE SUIVANT UN SP2CIFICATION D'IMPORTATION
                Kill (.FoundFiles(i))
            Next i


à la place du


 Debug.Print i, Tableau(i)


Ce qui sauf erreur de ma part devrait donner


Option Explicit  
 
Dim Tableau() As String  
 
Sub Tst2()
Dim i As Long
    Erase Tableau
    ListeFichiersDansDossier "C:\mon dossier", "txt", 0
    For i = LBound(Tableau) To UBound(Tableau)
        FileCopy Tableau(i), "C:\mon dossier save" & Right$(Tableau(i), (Len(Tableau(i)) - InStrRev(Tableau(i), "\" )))
        DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", Tableau(i), False, ""
        Kill (Tableau(i))
    Next i
End Sub
 
Private Sub ListeFichiersDansDossier(sChemin As String, sExt As String, r As Long)  
Dim Fichier As String, sPath As String  
 
    Fichier = Dir$(sChemin & "\*." & sExt)  
    Do While Len(Fichier) > 0  
        ReDim Preserve Tableau(r)  
        sPath = sChemin & "\" & Fichier  
        Tableau(r) = sPath  
        r = r + 1  
        Fichier = Dir$()  
    Loop  
End Sub


Message édité par kiki29 le 04-10-2010 à 15:24:06
n°2026843
fabiencer8​4
Posté le 04-10-2010 à 16:42:42  profilanswer
 

J'ai une erreur sur la ligne "For i = LBound(Tableau) To UBound(Tableau)"  code exe 9 "l'indice n'appartient pas a la selection"
 
Mais deja merci j'y vois deja beaucoup plus clair
 
EDIT 2 C'EST BON CA MARCHE MERRRRRRRRRRRRRRRRRRRRRRRRRCI    :bounce:  :bounce:  
 
en fait ca marche plus quand le dossier est vide.
 
Donc encore une petit demande comment puije interdire l'import si mon dossier est vide? car si mon dossier est vide j'ai lerreur ci dessus.
Ou du moins avoir un message "dossier vide " a la place d'erreur 9?
 
MERCI


Message édité par fabiencer84 le 04-10-2010 à 17:28:43
n°2026860
kiki29
Posté le 04-10-2010 à 18:24:38  profilanswer
 

Re, qqch comme cela devrait convenir


Option Explicit
   
Dim Tableau() As String
Dim bFlag As Boolean
 
Sub Tst2()
Dim i As Long
    Erase Tableau
    bFlag = False  
    ListeFichiersDansDossier "C:\mon dossier", "txt", 0
    If bFlag = True Then  
        MsgBox "Pas de Fichier", vbOKOnly + vbInformation, "Info"  
        Exit Sub  
    End If  
    For i = LBound(Tableau) To UBound(Tableau)
        FileCopy Tableau(i), "C:\mon dossier save" & Right$(Tableau(i), (Len(Tableau(i)) - InStrRev(Tableau(i), "\" )))
        DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", Tableau(i), False, ""
        Kill (Tableau(i))
    Next i
End Sub
 
Private Sub ListeFichiersDansDossier(sChemin As String, sExt As String, r As Long)
Dim Fichier As String, sPath As String
   
    Fichier = Dir$(sChemin & "\*." & sExt)
    If Len(Fichier) = 0 Then
        bFlag = True
        Exit Sub
    End If
    Do While Len(Fichier) > 0
        ReDim Preserve Tableau(r)
        sPath = sChemin & "\" & Fichier
        Tableau(r) = sPath
        r = r + 1
        Fichier = Dir$()
    Loop
End Sub


Message édité par kiki29 le 10-10-2010 à 17:40:50
n°2026869
fabiencer8​4
Posté le 04-10-2010 à 18:59:19  profilanswer
 

kiki29 tu est trop fort....
Il y avait un beug dans ton code mais grace a toi j'ai su le rectifié et maintenant tout fonctionne.
 
voici mon code definitif :  

Code :
  1. Option Explicit
  2.  
  3. Dim Tableau() As String
  4. Dim bFlag As Boolean
  5. Private Sub ListeFichiersDansDossier(sChemin As String, sExt As String, r As Long)
  6. Dim Fichier As String, sPath As String
  7.  
  8.     Fichier = Dir$(sChemin & "\*." & sExt)
  9.     If Len(Fichier) = 0 Then bFlag = True
  10.     Do While Len(Fichier) > 0
  11.         ReDim Preserve Tableau(r)
  12.         sPath = sChemin & "\" & Fichier
  13.         Tableau(r) = sPath
  14.         r = r + 1
  15.         Fichier = Dir$()
  16.     Loop
  17. End Sub
  18. Sub import_kyocera2()
  19. Dim i As Long
  20.     Erase Tableau
  21. bFlag = False
  22.         ListeFichiersDansDossier "C:\", "txt", 0
  23.           If bFlag = True Then
  24.         MsgBox "Pas de Fichier", vbOKOnly + vbInformation, "Info"
  25.         Exit Sub
  26.         Else
  27.       For i = LBound(Tableau) To UBound(Tableau)
  28.         FileCopy Tableau(i), "C:\SAUVEGARDE\" & Right$(Tableau(i), (Len(Tableau(i)) - InStrRev(Tableau(i), "\" )))
  29.         DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", Tableau(i), False, ""
  30.         Kill (Tableau(i))
  31.    Next i
  32.     End If
  33. End Sub


 
Encore merci a toi


Message édité par fabiencer84 le 04-10-2010 à 19:01:16
n°2026873
kiki29
Posté le 04-10-2010 à 19:11:11  profilanswer
 

Re, à priori  


Sub import_kyocera2()
Dim i As Long
    Erase Tableau
    bFlag = False
    ListeFichiersDansDossier "C:\", "txt", 0
    If bFlag = True Then
        MsgBox "Pas de Fichier", vbOKOnly + vbInformation, "Info"
        Exit Sub
    End If
 
    For i = LBound(Tableau) To UBound(Tableau)
        FileCopy Tableau(i), "C:\SAUVEGARDE\" & Right$(Tableau(i), (Len(Tableau(i)) - InStrRev(Tableau(i), "\" )))
        DoCmd.TransferText acImportDelim, "Spécification export ORDER", "FICHIER ORDER", Tableau(i), False, ""
        Kill Tableau(i)
    Next i
End Sub


Message édité par kiki29 le 05-10-2010 à 06:42:47
n°2027052
fabiencer8​4
Posté le 05-10-2010 à 13:48:09  profilanswer
 

Yes ca fonctionne aussi plus judicieux...
Merci en tout cas


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Besoin d'aide pour conversion Access 2003 2007

 

Sujets relatifs
Besoin d'aide pour un copier/coller sur filtres en vbaVC++.net (2003) et les Graphics/PictureBox
demande d aide pour integration de javascript sur blogpasser une variable dans la clause where ... besoin d'aide
import, traitement, conversion, opération sur fichier texte .txt[MySQL] Besoin d'aide pour optimiser une requête
Aide sur une REGEX C# svp 
Plus de sujets relatifs à : Besoin d'aide pour conversion Access 2003 2007


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR