import fichier texte dans un classeur puis une feuille

mumu

XLDnaute Occasionnel
Bonjour,

Encore un défi pour les excelliens !!
Je cherche à ouvrir dans un même fichier excel 2007 une centaine de fichier texte qui ne contiennent qu'une seule colonne et qui sont dans un même dossier. J'ai mis la liste des fichiers dans une feuille excel. Je voudrais tout ouvrir dans un classeur puis tout mettre dans une même feuille. Le début de la macro que j'ai trouvé et adaptée ouvre les fichiers un par un mais dans des classeur différents
Avec l'aide du forum et du net, j'ai écrit un bout de macro et je vous joints un exemple de mon classeur excel :

Code:
Sub OuvreTxt()

'partie 1 ouvre les fichiers texte
Dim Cel As Range
    For Each Cel In Range("A1:A2")
        Workbooks.OpenText Filename:=Cel.Value
    Next Cel
    
    
'partie 2 : tout mettre dans une même feuille
Dim N As Integer
'Activaton de la feuille récap
Sheet.Add.Name = "récap"
Sheets("récap").Activate

For N = 1 To Sheets.Count

'pour toutes les feuilles différentes de la feuille récap
If Sheets(N).Name <> ActiveSheet.Name Then
'détermine la dernière cellule pleine de la colonne A en partant du bas de la feuille récap
'si c'est A1 alors x=2, sinon x = première cellule vide de la col A en partant du bas de la feuille
If ActiveSheet.Range("A1048576").End(xlUp).Row = 1 Then x = 2 Else x = ActiveSheet.Range("A1048576").End(xlUp).Row + 1
Sheets(N).Range("A2:A" & Sheets(N).Range("A1048576").End(xlUp).Row).Copy Destination:=ActiveSheet.Range("A" & x)

End If 
Next N 
    
    
End Sub

En fait, il me manque juste un bout de code pour tout ouvrir dans le même classeur. J'ai tenté un filesearch mais ce n'est plus pris en compte dans excel 2007.
La question subsidiaire : combien de feuilles peuvent être créées dans un seul classeur excel 2007 ?

D'avance merci pour les futures réponses !!

Mumu
 

Pièces jointes

  • liste.xls
    26 KB · Affichages: 75
  • liste.xls
    26 KB · Affichages: 81
  • liste.xls
    26 KB · Affichages: 83

Hippolite

XLDnaute Accro
Re : import fichier texte dans un classeur puis une feuille

Bonjour,
Pour éviter les risques d'erreur (oubli ou mauvaise recopie) il serait plus sûr de travailler sur tous les fichiers placés dans un même dossier plutôt que d'après une liste.
Tu ne peux pas tout ouvrir dans un même classeur, tu peux ouvrir un fichier .txt sous Excel et recopier la feuille dans un classeur commun, mais ce serait plus simple et plus rapide de recopier directement sur la feuille récapitulative.
A+
 

kjin

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Bonjour,
Code:
Sub ImpTxt()
Dim fs As Scripting.FileSystemObject, f As Scripting.TextStream
Dim L&
L = 2
Set fs = CreateObject("Scripting.fileSystemObject")
For i = 1 To [A65000].End(xlUp).Row 'boucle sur le nom des fichiers
    On Error Resume Next
    Set f = fs.OpenTextFile(Cells(i, 1), forReading)
    Do Until f.AtEndOfStream 'boucle sur les lignes
        With Feuil2
            .Cells(L, 1) = f.ReadLine 'transfert la ligne
        End With
        L = L + 1
    Loop
    On Error GoTo 0
Next
Set f = Nothing
Set fs = Nothing
End Sub
Activer "MS Scripting Runtime" auparavant
A+
kjin
 

MJ13

XLDnaute Barbatruc
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Bonjour à tous,

Une petite adaptation du code de kjin

Code:
Sub ImpTxt()
Dim fs , f 
Dim L&
L = 2
Set fs = CreateObject("Scripting.fileSystemObject")
For i = 1 To [A65000].End(xlUp).Row 'boucle sur le nom des fichiers
    On Error Resume Next
    Set f = fs.OpenTextFile(Cells(i, 1), 1)
    Do Until f.AtEndOfStream 'boucle sur les lignes
        With Feuil2
            .Cells(L, 1) = f.ReadLine 'transfert la ligne
        End With
        L = L + 1
    Loop
f.close
    On Error GoTo 0
Next
Set f = Nothing
Set fs = Nothing
End Sub

Qui ne nécessite pas d'activer de références :p
 

mumu

XLDnaute Occasionnel
Re : import fichier texte dans un classeur puis une feuille

Bonjour à tous,

Je vous remercie pour cette aide précieuse.
Hippolite, merci pour le conseil mais pour éviter l'oubli de fichier, je passe par le dos puis un dir et j'ai ma liste de fichiers......
Merci MJ13 pour l'info, je pensais que cela serait beaucoup moins de feuilles.

Merci kjin pour ton code mais j'ai pris la macro de tototiti2008, pour éviter la référence à aller chercher. J'ai lancé la macro en test sur deux fichiers il y a plus de 5 minutes et ça tourne encore.....
Je testerai la tienne juste après.

Je vous tiens au courant de l'avancement....

Merci encore et A +

Mumu
 

tototiti2008

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Re,

Le code de kjin, et donc le mien (voleur :rolleyes:) sous-entend que tu ais :
Dans la Feuil1 de ton classeur, la liste des adresses des fichiers texte à ouvrir en colonne A
Une Feuil2 (vide) pour accueillir les résultats
Que tu lances la macro avec la Feuil1 activée....

Sinon envoie-nous un exemple qui ressemble à ton classeur

Edit : tu peux essayer de mettre "On error resume next" en commentaires pour avoir une idée d'où ça plante
 

mumu

XLDnaute Occasionnel
Re : import fichier texte dans un classeur puis une feuille

En mettant en commentaire la ligne error resume next, c'est la ligne :

.Cells(L, 1) = f.ReadLine 'transfert la ligne

qui est en erreur '424' objet requis

alors que j'ai bien en colonne A ma liste et Feuil1 activée
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Re,

Si tu veux toujours déboguer, il faudrait voir si f.ReadLine ne renvoie pas trop de caractères pour une cellule...
mais sans idée des fichiers textes exploités, difficile à dire
 

mumu

XLDnaute Occasionnel
Re : import fichier texte dans un classeur puis une feuille

voici un exemple de la structure d'un fichier texte, sachant que ce n'est qu'un extrait et qu'ils ont chacun un nombre de ligne différent
 

Pièces jointes

  • exemple.xls
    23 KB · Affichages: 87
  • exemple.xls
    23 KB · Affichages: 110
  • exemple.xls
    23 KB · Affichages: 109

tototiti2008

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Re,

En effet le texte ne semble pas trop long

Comme ça peut-être ?

Code:
Sub ImpTxt()
Dim fs , f , Ligne as String
Dim L&
L = 2
Set fs = CreateObject("Scripting.fileSystemObject")
For i = 1 To [A65000].End(xlUp).Row 'boucle sur le nom des fichiers
    On Error Resume Next
    Set f = fs.OpenTextFile(Cells(i, 1).value, 1)
    Do Until f.AtEndOfStream 'boucle sur les lignes
        With Feuil2
Ligne = f.ReadLigne
            .Cells(L, 1).value = Ligne 'transfert la ligne
        End With
        L = L + 1
    Loop
f.close
    On Error GoTo 0
Next
Set f = Nothing
Set fs = Nothing
End Sub
 

kjin

XLDnaute Barbatruc
Re : import fichier texte dans un classeur puis une feuille

Re,
Code:
Sub ImpTxt()
Dim fs As Scripting.FileSystemObject, f As Scripting.TextStream
Dim L&
L = 2
Set fs = CreateObject("Scripting.fileSystemObject")
For i = 1 To [A65000].End(xlUp).Row 'boucle sur le nom des fichiers
    If Dir(CStr(Cells(i, 1))) <> "" Then
        Set f = fs.OpenTextFile(Cells(i, 1).Text, ForReading)
        Do Until f.AtEndOfStream 'boucle sur les lignes
            With Feuil2
                .Cells(L, 1).Value = f.ReadLine
            End With
            L = L + 1
        Loop
        f.Close
    End If
Next
Set f = Nothing
Set fs = Nothing
End Sub
Voleur !
A+
kjin
 

mumu

XLDnaute Occasionnel
Re : import fichier texte dans un classeur puis une feuille

Je viens de retester les 2 macros et les deux renvoient des erreurs
Je ne vais pas vous faire perdre votre temps plus longtemps avec ça vu que j'ai réussi avec un autre code
Merci encore à tous !!

Mumu
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign