macro d'importation txt et date

jopont

XLDnaute Impliqué
Bonjour

j'utilise la macro suivante pour importer plusieurs fichiers txt en même temps dans une feuille excel.

Mon problème est le suivant, lorsqu'un j'importe dans le répertoire ""E:\fevrier08" par exemple, ou il y a autant de fichiers que de jours (0102.txt,0202.txt ...) l'importation ne se fait pas dans l'ordre des jours.

D'autre part les données importées des fichiers txt sont parfois erronées, j'ai des cellules avec date qui sont parfois fausses. exemple pour le 10/02/08 08:00, la donnée importée donne 02/10/08 08:00. Il y a une inversion sur certain jour.

Je joint le fichier excel avec deux fichiers txt.

merci pour votre aide

La macro :

Sub ouvrir()
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 = "G:\février08\"
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
End Sub
 

Pièces jointes

  • macroimport.zip
    11.8 KB · Affichages: 32
  • macroimport.zip
    11.8 KB · Affichages: 34
  • macroimport.zip
    11.8 KB · Affichages: 30

jopont

XLDnaute Impliqué
Re : macro d'importation txt et date

Voici une nouvelle adaptation :
Code:
Sub import()
    Dim Directory As String, File As String, Temp As String
    Dim NumRow As Long, NumCol As Integer
    Dim FF As Integer, I As Integer
    Dim LigFic As Long
    
    Directory = ThisWorkbook.Path & "\" & "fevrier08\"   ' "E:\fevrier08\"
    File = Dir(Directory & "*.txt")
Dans cette macro en fait j'aimerais rendre variable fevrier08, et pouvoir inscrire dans un textebox le nom du fichier
merci
 

cbea

XLDnaute Impliqué
Re : macro d'importation txt et date

Bonsoir à tous,

Dans le fichier joint, j'ai ajouté un bouton sur la feuille Feuil1 : Traiter un fichier.
Lors du clic sur ce bouton, une Userform apparaît avec les fichiers *.txt" qui se trouvent dans le répertoire et les sous-répertoires du classeur.
Un double clic sur le nom d'un fichier dans la liste permettra d'extraire les données du fichier.

J'espère que cette solution te conviendra.
 

Pièces jointes

  • macroimport.zip
    11.8 KB · Affichages: 20
  • macroimport.zip
    11.8 KB · Affichages: 20
  • macroimport.zip
    11.8 KB · Affichages: 25

cbea

XLDnaute Impliqué
Re : macro d'importation txt et date

Il ne faut pas l'intégrer dans la macro d'importation... c'est l'inverse.
A partir du double clic sur une ligne dans la liste, l'appel de la procédure d'importation s'effectue.


Code:
Private Sub lstFichier_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim RepFichier As String
    Dim NomRep As String
    Dim NomFic As String
    Dim nbCar As Integer
    
    If lstFichier.ListCount = 0 Then Exit Sub
    
    ' Nom du répertoire et du fichier
    RepFichier = lstFichier.List(lstFichier.ListIndex)
    ' Extraire le nom du répertoire et le nom du fichier
    For nbCar = Len(RepFichier) To 1 Step -1
        If Mid(RepFichier, nbCar, 1) = "\" Then Exit For
    Next
    NomRep = Mid(RepFichier, 1, nbCar)
    NomFic = Mid(RepFichier, nbCar + 1, Len(RepFichier) - nbCar)

    If NomFic = "" Or NomRep = "" Then Exit Sub
    
    ' Récupération des données du fichier
    [COLOR="Red"]Call import(NomRep, NomFic)[/COLOR]    
    Unload UserForm1
End Sub

La procédure "import" a également été modifiée pour prendre en compte le répertoire du fichier et le nom du fichier à traiter.
 
Dernière édition:

jopont

XLDnaute Impliqué
Re : macro d'importation txt et date

cbea, lorsque je télécharge le dernier fichier macroimport, je n'ai pas de bouton entre les colonnes E et F de la feuille 1.
Dans le VBE du fichier je n'ai que la macro concernant l'importation. Je n'ai pas de userform, ni de macro concernant lstfichier.
Le fichier macroimport.xls, date du 12/04/08.
As-tu uploadé le bon fichier ?
merci
 
Dernière édition:

jopont

XLDnaute Impliqué
Re : macro d'importation txt et date

Bonjour cbea
le fichier macroimport.xls se trouve dans mes documents/macroimport/fevrier08/...txt
J'ai essayé de le mettre dans le répertoire fevrier08, sans réussite.

Est-ce que cela peut venir de vista et/ou excel 2007

d'autre part pour la macro import j'utilise la macro qui supprime les premières lignes, et j'ai laissé la dernière ligne finalement. Est que cela influe la macro au niveau de la recherche de répertoire
Code:
Sub import()
    Dim Directory As String, File As String, Temp As String
    Dim NumRow As Long, NumCol As Integer
    Dim FF As Integer, I As Integer
    Dim LigFic As Long
    
    Directory = ThisWorkbook.Path & "\" & "mars08\"   ' "E:\fevrier08\"
    File = Dir(Directory & "*.txt")
    NumRow = ActiveCell.Row
    NumCol = ActiveCell.Column
    With ActiveSheet
        FF = FreeFile
        LigFic = 0
        Do While File <> ""
            Open Directory & File For Input As #FF
            Do While Not EOF(FF)
                Line Input #FF, Temp
                If LigFic > 4 Then
                    Table = Split(Temp, vbTab)
                    For I = 0 To UBound(Table)
                        If IsDate(Table(I)) Then
                            .Cells(NumRow, NumCol + I) = CDate(Table(I))
                        Else
                            .Cells(NumRow, NumCol + I) = Table(I)
                        End If
                    Next
                    NumRow = NumRow + 1
                End If
                LigFic = LigFic + 1
            Loop
            LigFic = 0
            Close #FF
            File = Dir
        Loop
    End With
End Sub

merci
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
626

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD