XL 2010 Importer .txt sur feuille Excel

thunder23

XLDnaute Occasionnel
Bonjour le forum,

Je souhaite importer les données d'un fichier en format texte sur une feuille Excel mais par VBA et avec la même mise en forme que dans le fichier .txt .
Un exemple est disponible en pièce jointe

Merci pour commentaires :)
 

Pièces jointes

  • testimport.xlsx
    433.3 KB · Affichages: 34

patricktoulon

XLDnaute Barbatruc
ben la reponse est dans la question
t'en a beaucoup comme ca :):p:p:p:p
edit
VB:
Sub test()
    Dim tout As String, x, fichier As String, tbl, colonnes
    fichier = "C:\Users\polux\DeskTop\bdd.txt"
    fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
    x = InputBox("tapez les numero de colonnes séparée par une virgule", "liste des colonnes")
    If x <> "" Then colonnes = Split(x, ",")
    x = FreeFile: Open fichier For Binary Access Read As #x: tout = String(LOF(x), " "): Get #x, , tout: Close #x
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText tout: .PutInClipboard: End With
    With Sheets(1).Cells(1, 1)
        .Parent.Activate
        .CurrentRegion.Clear
        .EntireColumn.NumberFormat = "mm/dd/yyyy"
        .Select
        ActiveSheet.Paste
        DoEvents
        tbl = Application.Index(.CurrentRegion.Value, Evaluate("ROW(" & 1 & ":" & .CurrentRegion.Rows.Count & ")"), colonnes)
        .CurrentRegion.ClearContents
        .EntireColumn.NumberFormat = "m/d/yyyy"
        .Resize(UBound(tbl), UBound(tbl, 2)) = tbl
        .Select
    End With

End Sub
;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
ben oui je l'ai concu comme ca
si tu veux ajouter a la suite c'est
VB:
Sub test()
    Dim tout As String, x$, fichier As String, tbl, colonnes
    Application.ScreenUpdating = False
        fichier = "C:\Users\polux\DeskTop\bdd.txt"
    fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt", 1, "ouvrir un fichier")
    If fichier = "" Then Exit Sub
    x = InputBox("tapez les numero de colonnes séparée par une virgule", "liste des colonnes")
    If x <> "" Then colonnes = Split(x, ",")
    x = FreeFile: Open fichier For Binary Access Read As #x: tout = String(LOF(x), " "): Get #x, , tout: Close #x
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText tout: .PutInClipboard: End With
    With Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1)
        .Parent.Activate
        '.CurrentRegion.Clear
        .EntireColumn.NumberFormat = "mm/dd/yyyy"
        .Select
        ActiveSheet.Paste
        DoEvents
        tbl = Application.Index(.CurrentRegion.Value, Evaluate("ROW(" & 1 & ":" & .CurrentRegion.Rows.Count & ")"), colonnes)
        .CurrentRegion.ClearContents
        .EntireColumn.NumberFormat = "m/d/yyyy"
        .Resize(UBound(tbl), UBound(tbl, 2)) = tbl
        .Select
    End With

End Sub
mais c'est risqué vu le nombre de ligne tu risque de pas avoir assez de place au bout de la Nème fois
 

thunder23

XLDnaute Occasionnel
c'est bon on est ok je peux virer la maquette ?

Alors pour le transfert plus de soucis, par contre deux petits soucis, les premières dates sont nickel mais après quelques ligne ça me mets au format jj/mm/aa et non jj/mm/aaaa. Pour se qui est de rajouter les lignes ensuite je crois que ça me supprime les premières lignes mais sinon la vitesse d'exécution o_O
 

Discussions similaires

Réponses
10
Affichages
359

Statistiques des forums

Discussions
312 201
Messages
2 086 170
Membres
103 151
dernier inscrit
nassim