Importation fichier txt sous Excel 2007 en VBA

martyouel Messages postés 1 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 31 mai 2009 - 31 mai 2009 à 17:29
cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 - 31 mai 2009 à 19:59
Bonjour,

j'ai développé une méthode d'importation en lot de fichiers txt dans un fichier Excel.
Je dois générer un onglet par fichier txt importé.
Pour le moment, j'ouvre mon fichier txt et le Split par "," dans un Array, ensuite je boucle mon array et ajoute toutes les informations dans ma WorkSheet.

Ça marche bien, sauf c'est pas assez performant. Ça prend en moyenne 20 secondes par fichier...donc pour un traitement d'environ 150 fichiers à la fois c'est trop long.
Quand j'utilise directement l'importation à partir d'un fichier .txt de Excel 2007, c'est archi-rapide.
Puis-je utiliser cette même fonction en VBA? Si oui, comment? je crois que ça serait la manière la plus optimale.

J'ai remarqué que sous mon objet Workbooks j'ai une fonction OpenTextFile...cependant dans ma situation j'ai 1 workbook et plusieurs worksheet, comment puis-je importer 1 fichier par Worksheet?

Voici ma fonction actuelle d'importation, laquelle fonctionne mais comme je dis, c'est pas optimale :

Private Sub ProcessFileImportation(SourceFile As String, objExcel As Excel.Application)
    Dim objFSO As Scripting.FileSystemObject
    Set objFSO = New Scripting.FileSystemObject

    iRow = iRow + 1
   
    arrData = Split(objFSO.OpenTextFile(SourceFile).ReadAll, vbNewLine)
    
    For Each strData In arrData
        arrItems = Split(strData, ",")
       
        For X = 0 To UBound(arrItems)
            objExcel.Cells(iRow, X + 1) = arrItems(X)
        Next
       
        iRow = iRow + 1
    Next 'For Each strData in arrData
End Sub

Merci de votre aide!

1 réponse

cnt Messages postés 219 Date d'inscription lundi 21 novembre 2005 Statut Membre Dernière intervention 20 décembre 2010 1
31 mai 2009 à 19:59
Bonjour
Voir plutôt avec la méthode "Open" de WorkBooks
exemple
            Workbooks.Open fichieraouvrir, 0, True, ","
            Application.AskToUpdateLinks = False
            ActiveSheet.Copy before:=Workbooks(1).Sheets(1)
            ActiveWorkbook.ActiveSheet.Name = "Feuille" & i ' <== index de boucle
            Workbooks(fich).Close False

fichieraouvrir=chemin complet du fichier à ouvrir ==> "C:\MondossierExcel\toto.txt"fich nom court du fichier avec l'extention> "toto.txt"

Cela reste à vérifier
0
Rejoignez-nous