importation fichier texte

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Defcom60

XLDnaute Junior
Bonjour,

j'ai trouver sur le forum pour importer plusieurs fichiers a la suite dans une feuille avec ce code

Code:
Dim Directory As String, File As String, Temp As String
Dim NumRow As Long, NumCol As Integer
Dim FF As Integer, I As Integer

Directory = "C:\test\"
File = Dir(Directory & "*.txt")
NumRow = ActiveCell.Row
NumCol = ActiveCell.Column
With ActiveSheet
FF = FreeFile
Do While File <> ""
Open Directory & File For Input As #FF
Do While Not EOF(FF)
Line Input #FF, Temp
Table = Split(Temp, vbTab)
For I = 0 To UBound(Table)
.Cells(NumRow, NumCol + I) = Table(I)
Next
NumRow = NumRow + 1
Loop
Close #FF
File = Dir
Loop
End With

je le trouve cette macro lente par rapport a la macro faite avec excel qui est la suivante

Code:
    Workbooks.OpenText Filename:="J:\TOOL\ta1519.txt", Origin _
        :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True

cette macros est quasi instantané mais elle import qu'un fichier

comment faire pour quel importe tous les fichiers txt d'un répertoire dans la même feuille comme dans le code N°1


cordialement.
 
Re : importation fichier texte

bonsoir,

merci pour ta réponse Skoobi mais mon problème n'est pas la macros elle fonctionne bien mais je la trouve très lente comparer a la méthode qu'utilise excel.

Je cherche juste une méthode pour faire pareil avec celle d'excel.
 
Re : importation fichier texte

Bonsoir Defcom60, Skoobi, le fil, le forum


C'est normal ta première macro ouvre un seul fichier

Si tu éxécutes l'autre macro dans un répertoire contenant plusieurs fichiers

c'est normal que le temps d'éxécution s'en trouve allongé.
 
Dernière édition:
Re : importation fichier texte

Re,

vois si ça convient (tenir compte des commentaires biensûr):

Code:
Sub test()
With Application.FileSearch
    .LookIn = "J:\TOOL"
    .FileType = msoFileTypeAllFiles
    .Filename = "*txt"
    If .Execute > 0 Then
        For i = 1 To .FoundFiles.Count
            Workbooks.OpenText Filename:=.FoundFiles(i), Origin _
            :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
            xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
            Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
            Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1)), TrailingMinusNumbers:=True
'ici il faut que tu copies les cellules importées vers un fichier excel vierge (cette macro
'devra y figurer) que tu alimentes au fur et à mesure des ouvertures des fichiers textes car
'en l'état, ce code va tout simplement ouvrir un fichier excel par fichier txt convertie.
        Next
    End If
End With

End Sub

Edit: Re Jean-Marie 🙂
 
Dernière édition:
Re : importation fichier texte

Re bonjour,

A la place du commentaire il faut que tu mettes un code qui copie les infos de ce fichier TXT ouvert vers un autre classeur "récup" par exemple puis tu ferme le fichier texte avant de passer au suivant.

un exemple pour copier la cellule A2 du fichier "actif" (dans ton cas le fichier TXT), vers le fichier "récup" qui contient la macro:
ActiveWorkbook.Sheets(1).Range("a2").Copy ThisWorkbook.Sheets(1).Range("a2")

Espérant avoir été plus clair.
 
Re : importation fichier texte

Merci MJ13 cela correspond presque a une chose pres je veut pas qu'il rapatrie les valeurs dans mon fichier excel ou je l'execute mais dans un autre classeur qui s'apelle par exemple RecupTXT

Code:
Sub ChoixFichierCumulTXT()
'Code issu en partie de  et d'un code de Coriollan et de http://www.info-3000.com/vbvba/boitedialogueintegree.php

ceclasseur = ThisWorkbook.Name
  FichiersChoisis = Application.GetOpenFilename("Textes purs, *.txt", , , , True)
  
  For Ctr = 1 To UBound(FichiersChoisis)
    'MsgBox FichiersChoisis(Ctr)
    ii = ActiveSheet.Range("a65536").End(xlUp).Row
    Workbooks.OpenText Filename:= _
FichiersChoisis(Ctr), Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Semicolon:=True

'inclu_nom_fichier début
derligne = ActiveSheet.Range("a65536").End(xlUp).Row
Range("A1:A" & derligne).Select
    Selection.Insert Shift:=xlToRight
    Selection.FormulaR1C1 = FichiersChoisis(Ctr)
'inclu_nom_fichier fin
derligne = ActiveSheet.Range("a65536").End(xlUp).Row

'Rows(1).Copy Workbooks(ceclasseur).Sheets(1).Range("A" & ii + 1)
Rows(1 & ":" & derligne).Copy Workbooks(ceclasseur).ActiveSheet.Range("A" & ii + 1)
ActiveWorkbook.Close savechanges:=False

  Next
End Sub


cordialement
 
Re : importation fichier texte

Re bonjour

Testes ce code
Code:
Sub ChoixFichierCumulTXT()
'Code issu en partie de  et d'un code de Coriollan et de [url=http://www.info-3000.com/vbvba/boitedialogueintegree.php]Les boîtes de dialogues intégrées[/url]
Stop
ceclasseur = ThisWorkbook.Name
leclasseur = "RecupTXT.xls"
  FichiersChoisis = Application.GetOpenFilename("Textes purs, *.txt", , , , True)
  
  For Ctr = 1 To UBound(FichiersChoisis)
    'MsgBox FichiersChoisis(Ctr)
    ii = Workbooks("RecupTXT.xls").Sheets(1).Range("a65536").End(xlUp).Row
    Workbooks.OpenText Filename:= _
FichiersChoisis(Ctr), Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Semicolon:=True
'inclu_nom_fichier début
derligne = ActiveSheet.Range("a65536").End(xlUp).Row
Range("A1:A" & derligne).Select
    Selection.Insert Shift:=xlToRight
    Selection.FormulaR1C1 = FichiersChoisis(Ctr)
'inclu_nom_fichier fin
derligne = ActiveWorkbook.Sheets(1).Range("a65536").End(xlUp).Row
'Rows(1).Copy Workbooks(ceclasseur).Sheets(1).Range("A" & ii + 1)
Rows(1 & ":" & derligne).Copy Workbooks("RecupTXT.xls").Sheets(1).Range("A" & ii + 1)
ActiveWorkbook.Close savechanges:=False
  Next
End Sub
 
Dernière édition:
Re : importation fichier texte

Bonjour


EDIT: Effectivement ca fonctionne mais en faisant ce que tu ne veux pas
(lol)

La macro crée un fichier xls pour chaque fichier texte importé.


Avec ces modifications, pas de problèmes rencontrés avec XL2000
Code:
Sub ChoixFichierCumul_PAS_OK_MaiS_JY_Retourne()
'Code issu en partie de:
'et d'un code de Coriollan
'et de Les boîtes de dialogues intégrées
Dim Ctr As Long
Dim nclasseur As String
Dim WKB As Workbook
Set WKB = ThisWorkbook
With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With
FichiersChoisis = _
Application.GetOpenFilename("Textes purs, *.txt", , , , True)
'ouverture des fichiers texte
For Ctr = 1 To UBound(FichiersChoisis)

Workbooks.OpenText _
    FichiersChoisis(Ctr), xlMSDOS, 1, xlDelimited, xlDoubleQuote, False, True
        Application.DisplayAlerts = False
        'création du nom donné au nouveau fichier
            nclasseur = _
            Left(ActiveWorkbook.Name, _
            Len(ActiveWorkbook.Name) - 4) & ".xls"
        'sauvegarde avec ce nouveau nom
            ActiveWorkbook.SaveAs (nclasseur)
        'Fermeture du classeur
            ActiveWorkbook.Close
    Next
With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub
En espérant que cela fonctionne sur ton pc
 
Dernière édition:
Re : importation fichier texte

Re


Cette fois cela fonctionne

Code:
Sub ChoixFichierCumulOK_III()
'Code issu en partie de:
'et d'un code de Coriollan
'et de Les boîtes de dialogues intégrées
Dim Ctr As Long
Dim nclasseur As String
Dim ii As Long
Dim WKB As Workbook
Dim derligne As Long
Set WKB = ThisWorkbook
With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With
FichiersChoisis = _
Application.GetOpenFilename("Textes purs, *.txt", , , , True)
'ouverture des fichiers texte
For Ctr = 1 To UBound(FichiersChoisis)
ii = WKB.Sheets(1).Range("a65536").End(xlUp).Row
Workbooks.OpenText _
FichiersChoisis(Ctr), xlMSDOS, 1, xlDelimited, xlDoubleQuote, False, True
derligne = ActiveSheet.Range("a65536").End(xlUp).Row
Range("A1:A" & derligne).Select
    Selection.Insert Shift:=xlToRight
    Selection.FormulaR1C1 = FichiersChoisis(Ctr)
'inclu_nom_fichier fin
derligne = ActiveWorkbook.Sheets(1).Range("a65536").End(xlUp).Row
Rows(1 & ":" & derligne).Copy WKB.Sheets(1).Range("A" & ii + 1)
Application.DisplayAlerts = False
ActiveWorkbook.Close savechanges:=False
Next
With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
818
Réponses
3
Affichages
504
Réponses
15
Affichages
785
Réponses
3
Affichages
673
Retour