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
et oui je viens de verifier
regarde arriver vers 1340 dans le fichier txt
autrement dit tu n'y peux rien c'est pas excel c'est ton fichier txt
meme manuellement quand on regarde le format cellule il est bon "jj/mm"aaaa"
encore une BDD pourri ;)

Capture.JPG
 

thunder23

XLDnaute Occasionnel
et oui je viens de verifier
regarde arriver vers 1340 dans le fichier txt
autrement dit tu n'y peux rien c'est pas excel c'est ton fichier txt
meme manuellement quand on regarde le format cellule il est bon "jj/mm"aaaa"
encore une BDD pourri ;)

Regarde la pièce jointe 1063779

Ben après le soucis est que c'est le logiciel de la station qui émet ce fichier malheureusement je n'y peux rien à ce problème. Ou alors dans Excel je peux peut-être tricher en mettant une colonne pour les date comme ça plus de soucis?
 

thunder23

XLDnaute Occasionnel
Re,

oui en effet je viens de voir à l'instant et j'ai même testé avec juste le mois d'avril et ça ne me le fait pas.
Par contre petit soucis, quand j'importe la première fois ça me met bien en place par contre dès que j'importe une deuxième fois ça me décale vers le bas le tout complet en gardant le nombre ligne que j'avais insérer auparavant. ;)
 

patricktoulon

XLDnaute Barbatruc
re
mistification ;):p:p:p
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
    For i = 20 To Right(Year(Date) + 1, 2): tout = Replace(tout, "/" & i, "/20" & i): Next
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText tout: .PutInClipboard: End With
    With Sheets(1).Cells(1, 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
     '.EntireColumn.NumberFormat = "dd/mm/yyyy"
     .EntireColumn.HorizontalAlignment = xlRight
     End With
 End Sub

je vais retrouver et essayer ton code Staple1600
 

thunder23

XLDnaute Occasionnel
Bonjour le fil

Ce souci n'apparaissait pas avec QueryTable*, non ?
(C'est peut-être plus long, mais sans souci, non ?)

*: macro du message#47
...:rolleyes:

NB: Et tu ne sais toujours pas quelle proposition tu vas retenir au bout de 81 posts ? :eek:

Bonjour Staple1600,

Lis mon message #51 ;)
c'est que j'ai eu un problème que je n'avais pas soupçonné sinon il n'y aurait pas autant de message :)
 

patricktoulon

XLDnaute Barbatruc
bon j'ai essayé avec querytable ca marche mais c'est plus long
VB:
Sub test3()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\polux\Desktop\bdd.txt", Destination:=Range("$A$1"))
         .Name = "bdd"
        .FieldNames = True
        .PreserveFormatting = True
        .RefreshStyle = xlInsertDeleteCells
         .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
          .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    .Delete
    End With
End Sub
et comme le textdata file est tout a "Standard(1) on peut supprimer cette ligne on gagne encore quelque millième

et si c'est a la suite
c'est
Destination:=sheets(1).Range("$A$" & cells(rows.count,1).end(xlup).row+1)
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
351