Importer plusieurs .txt dans un classeur xls

Xion

XLDnaute Junior
Bonjour à tout le forum,


J'ai pas mal cherché sur les différents posts, mais je n'ai pu trouver exactement ce dont j'ai besoin.

J'ai un fichier excel d'analyse qui avec différentes macros me permet d'aller chercher un . txt de l'importer vers mon fichier d'analyse et de filtrer les erreurs détectées sur le rapport .txt.

Mon soucis aujourd'hui est que je n'analyse non plus 1 seul (gros) fichier .txt mais il est divisé en 300 petits fichiers .txt (contenus dans un dossier) de rapports d'analyses.

Avec une macro quelqu'un peut il me dire si il est possible de créer (et comment bien sur ! )dans un classeur une feuille par .txt contenu dans un seul et même dossier ?

Merci pour votre aide

Xion
 

gwenlorin

XLDnaute Occasionnel
Re : Importer plusieurs .txt dans un classeur xls

Bonjour Xion,

oui c'est possible avec quelque chose comme :

Code:
Sub ListFiles()
Application.screenupdating = False
    Directory = "c:\windows\desktop\" '--- répertoire pour la recherche des fichiers

    On Error Resume Next
    With Application.FileSearch
        .NewSearch
        .LookIn = Directory
        .Filename = "*.txt"
        .SearchSubFolders = False
        .Execute

        For i = 1 To .FoundFiles.Count
           Worksheets.Add
           Activesheet.name=.FoundFiles(i)
           
           '--- importation de ton fichier .txt
           'A CODER PAR TES SOINS

        Next i
    End With
Application.screenupdating = True
End Sub

Maintenant 300 feuilles dans un fichier Excel je sais pas si ta machine va supporter.

A+
 
Dernière édition:

mromain

XLDnaute Barbatruc
Re : Importer plusieurs .txt dans un classeur xls

bonjour Xion, gwenlorin,


bien que gwenlorin ait été plus rapide, je te met une autre solution :
Code:
Sub test()
'déclaration des variables
Dim myFso As Object, dossierAnalyse As Object, fichier As Object

'récupérer le dossier annalysé
Set myFso = CreateObject("Scripting.FileSystemObject")
Set dossierAnalyse = myFso.GetFolder("E:\test")

'boucler sur tous les fichiers de ce dossier
For Each fichier In dossierAnalyse.Files
    'filtrer sur les fichiers .txt (inutile si il n'y a que des fichiers .txt dans le dossier)
    If Right(fichier.Name, 3) = "txt" Then
        
        With ThisWorkbook
            'ajouter une feuille au classeur en dernière position
            .Sheets.Add after:=.Sheets(.Sheets.Count)
            
            'nommer la nouvelle feuille au nom du fichier texte (limité à 31 caractères)
            On Error Resume Next 'au cas ou un onglet porte déjà le nom (pour que la macro ne s'arète pas)
            .Sheets(.Sheets.Count).Name = Left(Left(fichier.Name, Len(fichier.Name) - 4), 31)
            On Error GoTo 0
            
'''            'à partir d'ici, je te laisse adapter ta macro d'import de fichier texte.
'''            'la nouvelle feuille est accessible par ".Sheets(.Sheets.Count)"
'''            'et le path du fichier texte est accessible par "fichier.Path"
            
        End With
        
    End If
Next fichier

'détrire les objets
Set myFso = Nothing: Set fichier = Nothing: Set dossierAnalyse = Nothing
End Sub
a+
 

Xion

XLDnaute Junior
Re : Importer plusieurs .txt dans un classeur xls

Bonjour à vous mromain et gwenlorin,


Tout D'abord MERCI !!!!

Les 2 solutions fonctionnent très bien (J'ai opté pour celle de gwenlorin car il y a moins de lignes de code).

Cependant je n'ai pas été assez précis dans ma demande car je souhaiterais egalement importer le contenu des fichier sur chaque worksheet ajoutée ( en la renommant si possible avec le nom du fichier .txt).

Je m'explique, pour importer les .txt, je ne fais qu'ouvrir l'explorateur de fichiers (avec un commandbutton) et selectionne celui qui m'interesse, mais si j'ai plus de 300 .txt à importer cela risque d'être long et fastidieux...

D'après vous est il possible d'importer le contenu des .txt sur chaque feuille ajoutée ?

En tout cas, un grand merci à vous deux car je bloquais sur ce point !!!

Xion
 

Discussions similaires

Réponses
11
Affichages
556

Statistiques des forums

Discussions
312 609
Messages
2 090 201
Membres
104 451
dernier inscrit
scp9990