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

Staple1600

XLDnaute Barbatruc
Re

•>thunder23
J'ai lu le message#51
1) je n'aime pas les questions à tiroir
2) Mon code fonctionne pour ce qui était demandé au départ
3) Et la réponse à la question du#51 est évidente
J'importe tout puis je créé une macro qui supprime les colonnes non désirées et ce après l'import ;)
 

thunder23

XLDnaute Occasionnel
Re

•>thunder23
J'ai lu le message#51
1) je n'aime pas les questions à tiroir
2) Mon code fonctionne pour ce qui était demandé au départ
3) Et la réponse à la question du#51 est évidente
J'importe tout puis je créé une macro qui supprime les colonnes non désirées et ce après l'import ;)

Effectivement Staple1600 je ne remets pas en doute ton code et ma demande était résolu ;)
Oui sauf le seule façon qui est possible de faire est par .Delete et ça va me dérégler mes formules dans le gestionnaire de nom ;)
Là pour le coup avec la sélection des colonnes avant l'importation c'est patricktoulon qui serait plus intéressant :)
 

patricktoulon

XLDnaute Barbatruc
re
avec querytable et evaluate arraycolonnes et getopenfilename
VB:
Sub test3()
    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, ",")
    With ActiveSheet
        With .QueryTables.Add(Connection:="TEXT;" & fichier, 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
            .TextFileDecimalSeparator = "."
            .TextFileTrailingMinusNumbers = True
            .Refresh BackgroundQuery:=False
            .Delete
        End With

        tbl = Application.Index(.Cells(1).CurrentRegion.Value, Evaluate("ROW(" & 1 & ":" & .Cells(1).CurrentRegion.Rows.Count & ")"), colonnes)
        .Cells(1).CurrentRegion.ClearContents
        .Cells(1).Resize(UBound(tbl), UBound(tbl, 2)) = tbl
    End With
End Sub
 

thunder23

XLDnaute Occasionnel
Re

•>thunder23
Le Delete te gène ?
Pas de souci ;)
Alors, il suffisait d'être un peu curieux, non ?
Un indice: xlSkipColumn

Allez, c'est ... KADO
https://docs.microsoft.com/fr-fr/office/vba/api/excel.xlcolumndatatype

Ce n'est pas qu'il me gène, c'est que là tu me parles de type de code que je ne connais pas du tout. Je ne suis dans le VBA depuis que l'année dernière et je n'ai pas tout explorer ;)
 

patricktoulon

XLDnaute Barbatruc
re je viens d'essayer le successif et effectivement il colle les données horizontaement c'est chiant
pourtant l'adresse de destination c'est toujours
VB:
 Set destinat = IIf(.[A1] <> "", .Range("$A$" & .Cells(Rows.Count, 1).End(xlUp).Row + 2), .[A1])
      With .QueryTables.Add(Connection:="TEXT;" & fichier, Destination:=destinat)
en fait ca me gonfle :p :p ma solution fonctionne et est plus rapide
 

thunder23

XLDnaute Occasionnel
re je viens d'essayer le successif et effectivement il colle les données horizontaement c'est chiant
pourtant l'adresse de destination c'est toujours
VB:
 Set destinat = IIf(.[A1] <> "", .Range("$A$" & .Cells(Rows.Count, 1).End(xlUp).Row + 2), .[A1])
      With .QueryTables.Add(Connection:="TEXT;" & fichier, Destination:=destinat)

Oui je ne comprends pas du tout, par contre j'ai un espoir pour les dates. avant que tu modifies tout en QueryTables, j'ai échanger l'apostrophe sur les .Entirecolumn.NumberFormat et ça fonctionne nickel. On va y arriver ^^
 

Discussions similaires

Réponses
10
Affichages
325

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG