Indiquer le répertoire par défaut du fichier à importer

bouba_95

XLDnaute Nouveau
Bjr le forum,

Mon besoin est d'importer quotidiennement des fichiers texte depuis Excel.
Le fichier texte se trouve sur un répertoire Y:\cuba\extraction\
Le fichier à importer est nommé CUBA_TEXT_20070921090733 avec la date et l'heure de l'horodatage du fichier texte qui se trouve sur le même répertoire.
Ce que j'aimerai, c'est pouvoir choisir dans la liste du répertoire le fichier du jour à importer.
Ma macro :
Code:
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;Y:\cuba\extraction\CUBA_NOMAD_20070921090733.txt", Destination:=Range( _
        "A1"))
        .Name = "CUBA_NOMAD_20070921090733"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 1, 1, 2, 1, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
je crois qu'il faut utiliser la fonction chdir pour ouvrir la boîte de dialogue du répertoire où se trouve les fichiers.
J'aimerai avoir obtenir des infos, si vous avez un code mieux que ça, n'hésitez pas.
Merci d'avance.
 

pierrejean

XLDnaute Barbatruc
Re : Indiquer le répertoire par défaut du fichier à importer

bonjour bouba 95

teste:

Code:
fileToOpen = Application .[B]GetOpenFilename[/B]("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
msgbox("le fichier a ouvrir se nomme " & fileToOpen 
End If

cela te permettra de choisir le fichier a ouvrir
 

bouba_95

XLDnaute Nouveau
Re : Indiquer le répertoire par défaut du fichier à importer

re

au debut de la macro

la variable fileToOpen sera ensuite utilisée pour representer le nom du fichier

le msgbox n'est la que pour te permettre de comprendre


re
il me dit la variable fileToOpen non défini !

le code modifié mais quel est la partie à enliever

Code:
Sub Imp_TXT()
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> False Then
MsgBox ("le fichier a ouvrir se nomme ") & fileToOpen
End If
ChDrive "Y"
ChDir "Y:\cuba\extraction\"

    With ActiveSheet.QueryTables.Add(Connection:= _
        .Name = "CUBA_NOMAD_20070921090733"  ' ne sert plus à rien ?
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 1, 1, 2, 1, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
 

pierrejean

XLDnaute Barbatruc
Re : Indiquer le répertoire par défaut du fichier à importer

re

A tester:

Code:
Sub Imp_TXT()
Dim fileToOpen as String
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> "" Then
 
ChDrive "Y"
ChDir "Y:\cuba\extraction\"
 
With ActiveSheet.QueryTables.Add(Connection:= _
.Name = FileToOpen 
.FieldNames = True
.............
..........

End if
 

bouba_95

XLDnaute Nouveau
Re : Indiquer le répertoire par défaut du fichier à importer

re

A tester:

Code:
Sub Imp_TXT()
Dim fileToOpen as String
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If fileToOpen <> "" Then
 
ChDrive "Y"
ChDir "Y:\cuba\extraction\"
 
With ActiveSheet.QueryTables.Add(Connection:= _
.Name = FileToOpen 
.FieldNames = True
.............
..........

End if

JE TESTE MERCI
 

bouba_95

XLDnaute Nouveau
Re : Indiquer le répertoire par défaut du fichier à importer

JE TESTE MERCI

re
en compilant le code ci-dessous, ça marche
Code:
Sub Imp_TXT()
    Dim fileToOpen As String
    fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If fileToOpen <> "" Then
 
        ChDrive "Y"
    End If
End Sub
M'est-il possible lors du transfert du fichier texte délimité ";", d'importer que les colonnes souhaitées et de modifer le format de la date enfin de simplifier le code

Code:
With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;Y:\cuba\extraction\CUBA_NOMAD_20070921090733.txt", Destination:=Range( _
        "A1"))
        .Name = "CUBA_NOMAD_20070921090733"[COLOR="red"]à enlever car dàja défini code ci-dessus [/COLOR]
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 1, 1, 1, 1, 9, 9, 9)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=LEFT(RC[-1],8)"
    Range("D2").Select
    ActiveWindow.SplitRow = 17
    ActiveWindow.Panes(3).Activate
    Range("A18").Select
    ActiveCell.SpecialCells(xlLastCell).Select
    ActiveWindow.SmallScroll Down:=1
    ActiveWindow.Panes(1).Activate
    Range("D1").Select
    Selection.Copy
    Range("D2:D53957").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("D:D").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("C:C").Select
    Selection.Delete Shift:=xlToLeft
    Columns("D:D").Select
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = _
        "=DATE(LEFT(RC[-1],4),MID(RC[-1],5,2),RIGHT(RC[-1],2))" [COLOR="Red"]Formule format date de AAAAMMJJ en JJ/MM/AAAA[/COLOR]
    Range("D1").Select
    Selection.Copy
    Range("D2:D53957").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Columns("D:D").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("C:C").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
    ActiveWindow.SplitRow = 0
End Sub
 

kiki29

XLDnaute Barbatruc
Re : Indiquer le répertoire par défaut du fichier à importer

A adapter à ton contexte en tenant compte des posts antérieurs
Code:
Option Explicit

Sub Tst()
Dim Fichier As Variant
    ChDrive "Y"
    Chdir "Y:\cuba\extraction\"
    Fichier = Application.GetOpenFilename("Fichier Texte(*.txt), *.txt")
    If Fichier <> False Then Lire Fichier
End Sub

Private Sub Lire(ByVal NomFichier As String)
Dim chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
Dim Debut As Long, Fin As Long

    Separateur = ";"
    Cells.Clear
    Application.ScreenUpdating = False

    Close
    NumFichier = FreeFile

    iRow = 0
    Open NomFichier For Input As #NumFichier
    Do While Not EOF(NumFichier)
        iCol = 1: iRow = iRow + 1
        Line Input #NumFichier, chaine
        Ar = Split(chaine, Separateur)
        For i = LBound(Ar) To UBound(Ar)
            ' Ici tu fais le choix des Ar(i) à importer
            Cells(iRow, iCol) = Ar(0)
            Cells(iRow, iCol + 1) = Ar(2)
            Cells(iRow, iCol + 2) = Ar(5)
            'etc..
        Next i
    Loop
    Close #NumFichier

    Application.ScreenUpdating = True
End Sub
 
Dernière édition:

bouba_95

XLDnaute Nouveau
Re : Indiquer le répertoire par défaut du fichier à importer

A adapter à ton contexte en tenant compte des posts antérieurs
Code:
Option Explicit

Sub Tst()
Dim Fichier As Variant
    ChDrive "Y"
    Chdir "Y:\cuba\extraction\"
    Fichier = Application.GetOpenFilename("Fichier Texte(*.txt), *.txt")
    If Fichier <> False Then Lire Fichier
End Sub

Private Sub Lire(ByVal NomFichier As String)
Dim chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1
Dim Debut As Long, Fin As Long

    Separateur = ";"
    Cells.Clear
    Application.ScreenUpdating = False

    Close
    NumFichier = FreeFile

    iRow = 0
    Open NomFichier For Input As #NumFichier
    Do While Not EOF(NumFichier)
        iCol = 1: iRow = iRow + 1
        Line Input #NumFichier, chaine
        Ar = Split(chaine, Separateur)
        For i = LBound(Ar) To UBound(Ar)
            ' Ici tu fais le choix des Ar(i) à importer
            Cells(iRow, iCol) = Ar(0)
            Cells(iRow, iCol + 1) = Ar(2)
            Cells(iRow, iCol + 2) = Ar(5)
            'etc..
        Next i
    Loop
    Close #NumFichier

    Application.ScreenUpdating = True
End Sub

Merci,
Une fois les champs du fichier txt à importé, je souhaiterai modifier le format de la date qui est au format AAAAMMJJHH24MISS que j'aimerai mettre au format JJ/MM/AAAA sur Excel.
Faut-il reformater la date dans Excel ou lors de l'import ???
Idem rajouter des en-tête.
 

chris

XLDnaute Barbatruc
Re : Indiquer le répertoire par défaut du fichier à importer

Bonjour
Perso, je testerais en manuel le changement lors de l'import et si concluant je l'intégrerais dans la macro car il est toujours périlleux de retourner les dates après coup, certaines ayanr été interprêtées en texte, d'autres en dates...
 

bouba_95

XLDnaute Nouveau
Re : Indiquer le répertoire par défaut du fichier à importer

Bonjour
Perso, je testerais en manuel le changement lors de l'import et si concluant je l'intégrerais dans la macro car il est toujours périlleux de retourner les dates après coup, certaines ayanr été interprêtées en texte, d'autres en dates...

Comment faire quand la date d'origine est au format AAAAMMJJHH24MISS = 20070827090222.
De plus lors de l'import, je prend bien soin de cocher l'option date à JMA.
Après les étapes d'importation avec l'assistant, le format est toujours de type AAAAMMJJHH24MISS.
Donc il faut bidouiller en VB:confused:
 

kiki29

XLDnaute Barbatruc
Re : Indiquer le répertoire par défaut du fichier à importer

c'est à craindre car l'import avec JMA cochée présuppose qu'il y a un séparateur de date ici en France "/" dans d'autre pays cela peut être "." etc, ainsi qu'au moins un espace entre la date et l'horaire et ":" comme séparateur horaire
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 668
Messages
2 090 739
Membres
104 643
dernier inscrit
adriano22