OVH Cloud OVH Cloud

Import de fichiers texte

4 réponses
Avatar
Christian
Bonjour à tous
J'aimerais importer plusieurs fichiers texte dans un même classeur,
un fichier un onglet.
Le seul code que j'ai trouvé est celui ci
''''Set Travail = Application.FileSearch
''''With Travail
'''' .LookIn = "G:\"
'''' .Filename = "*.txt"
'''' If .Execute > 0 Then
'''' Range("a1").Select
'''' For i = 1 To .FoundFiles.Count
'''' Workbooks.Open (.FoundFiles(i))
'''' ActiveWorkbook.Worksheets.Add
'''' Next i
'''' Else
'''' MsgBox "pas de fichier"
'''' End If
'''' End With
mais ce code ouvre les fichiers dans un nouveau classeur
qq a t'il une solution pour remplacer le "Workbooks.Open "
par insert import ou ....

merci
Christian

4 réponses

Avatar
JLuc
Christian avait soumis l'idée :
Bonjour à tous
J'aimerais importer plusieurs fichiers texte dans un même classeur,
un fichier un onglet.
Le seul code que j'ai trouvé est celui ci
''''Set Travail = Application.FileSearch
''''With Travail
'''' .LookIn = "G:"
'''' .Filename = "*.txt"
'''' If .Execute > 0 Then
'''' Range("a1").Select
'''' For i = 1 To .FoundFiles.Count
'''' Workbooks.Open (.FoundFiles(i))
'''' ActiveWorkbook.Worksheets.Add
'''' Next i
'''' Else
'''' MsgBox "pas de fichier"
'''' End If
'''' End With
mais ce code ouvre les fichiers dans un nouveau classeur
qq a t'il une solution pour remplacer le "Workbooks.Open "
par insert import ou ....

merci
Christian


A adapter, delimteurs fixes

Sheets(Sheets.Count).Name = "Temp"
Set ws = ThisWorkbook.Worksheets("Temp")
' Recuperation du fichier texte de la commande
With ws.QueryTables.Add(Connection:= _
"TEXT;" & Range("Fichier"), _
Destination:=ws.Range("A1"))
.Name = "commande"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(2, 18, 2, 4, 8, 10, 17, 7, 2, 9)
.Refresh BackgroundQuery:úlse
End With

Avatar
Alain CROS
Bonjour,

1 - Lancer l'enregistreur de macro.
2 - Données - Données Externes - Importer des données...
3 - Suivre l'assistant.
4 - Arrêter l'enregistrement.
5 - Combiner cette nouvelle macro avec le code précédent.

Bonne après-midi.

Alain CROS

"Christian" a écrit dans le message de news:

| Bonjour à tous
| J'aimerais importer plusieurs fichiers texte dans un même classeur,
| un fichier un onglet.
| Le seul code que j'ai trouvé est celui ci
| ''''Set Travail = Application.FileSearch
| ''''With Travail
| '''' .LookIn = "G:"
| '''' .Filename = "*.txt"
| '''' If .Execute > 0 Then
| '''' Range("a1").Select
| '''' For i = 1 To .FoundFiles.Count
| '''' Workbooks.Open (.FoundFiles(i))
| '''' ActiveWorkbook.Worksheets.Add
| '''' Next i
| '''' Else
| '''' MsgBox "pas de fichier"
| '''' End If
| '''' End With
| mais ce code ouvre les fichiers dans un nouveau classeur
| qq a t'il une solution pour remplacer le "Workbooks.Open "
| par insert import ou ....
|
| merci
| Christian
|
Avatar
Christian
Bonjour Jluc
Je n'ai pas reusi a adapter ta solution,je bloque sur
"TEXT;" & Range("Fichier")
je precise que je ne connais pas le nom et le nombre de fichiers à
importer.
Cdlt
Christian


Christian avait soumis l'idée :
Bonjour à tous
J'aimerais importer plusieurs fichiers texte dans un même classeur,
un fichier un onglet.
Le seul code que j'ai trouvé est celui ci
''''Set Travail = Application.FileSearch
''''With Travail
'''' .LookIn = "G:"
'''' .Filename = "*.txt"
'''' If .Execute > 0 Then
'''' Range("a1").Select
'''' For i = 1 To .FoundFiles.Count
'''' Workbooks.Open (.FoundFiles(i))
'''' ActiveWorkbook.Worksheets.Add
'''' Next i
'''' Else
'''' MsgBox "pas de fichier"
'''' End If
'''' End With
mais ce code ouvre les fichiers dans un nouveau classeur
qq a t'il une solution pour remplacer le "Workbooks.Open "
par insert import ou ....

merci
Christian


A adapter, delimteurs fixes

Sheets(Sheets.Count).Name = "Temp"
Set ws = ThisWorkbook.Worksheets("Temp")
' Recuperation du fichier texte de la commande
With ws.QueryTables.Add(Connection:= _
"TEXT;" & Range("Fichier"), _
Destination:=ws.Range("A1"))
.Name = "commande"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(2, 18, 2, 4, 8, 10, 17, 7, 2, 9)
.Refresh BackgroundQuery:úlse
End With






Avatar
JLuc
*Bonjour Christian*,
C'est vrai, je t'ai jeter le code un peu vite. En fait j'ai une feuille
avec des cellule nommées. J'en ai une qui s'appelle Fichier et qui
contient le chemin et le nom du fichier texte.
Donc tu peux changer en :
"TEXT;C:MonRepertoireMonfichier.txt"
JLuc
je precise que je ne connais pas le nom et le nombre de fichiers à
Pour importer un fichier, il vaut mieux connaitre son nom... :oÞ

Pour le nombre aussi si tu veux faire une boucle !
JLuc


Christian avait soumis l'idée :
Bonjour à tous
J'aimerais importer plusieurs fichiers texte dans un même classeur,
un fichier un onglet.
Le seul code que j'ai trouvé est celui ci
''''Set Travail = Application.FileSearch
''''With Travail
'''' .LookIn = "G:"
'''' .Filename = "*.txt"
'''' If .Execute > 0 Then
'''' Range("a1").Select
'''' For i = 1 To .FoundFiles.Count
'''' Workbooks.Open (.FoundFiles(i))
'''' ActiveWorkbook.Worksheets.Add
'''' Next i
'''' Else
'''' MsgBox "pas de fichier"
'''' End If
'''' End With
mais ce code ouvre les fichiers dans un nouveau classeur
qq a t'il une solution pour remplacer le "Workbooks.Open "
par insert import ou ....

merci
Christian


A adapter, delimteurs fixes

Sheets(Sheets.Count).Name = "Temp"
Set ws = ThisWorkbook.Worksheets("Temp")
' Recuperation du fichier texte de la commande
With ws.QueryTables.Add(Connection:= _
"TEXT;" & Range("Fichier"), _
Destination:=ws.Range("A1"))
.Name = "commande"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = xlWindows
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(2, 18, 2, 4, 8, 10, 17, 7, 2, 9)
.Refresh BackgroundQuery:úlse
End With







--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS