Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

 

thunder23

XLDnaute Occasionnel

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.
 

Staple1600

XLDnaute Barbatruc
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
...

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

patricktoulon

XLDnaute Barbatruc
re
mistification
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
...

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…