Imports de fichiers txt dans un classeur, j'ai trouvé la solution, mais
Bonjour,
j'ai exactement le même besoin que l'utilisateur qui avait posté cette question
https://forum.excel-pratique.com/excel/importer-plusieurs-fichiers-txt-dans-differents-onglets-90436
et je me trouve avec exactement le même problème (les onglets sont créés dans un nouveau classeur et non pas dans celui où je lance la macro). Par contre, en ce qui me concerne la modification proposée par un autre utilisateur en réponse (supprimer un passage, mais j'ai peut-être mal compris) ne fonctionne pas...
Si quelqu'un veut bien m'aiguiller... (désolé, je n'ai pas trouvé comment poster à la suite de la discussion en question).
Merci d'avance,
Adrien
et lorsque je supprime la partie mentionnée dans l'encadré,
l’exécution donne un problème de compilation "Boucle sans Do"
et dans le code le titre de la macro est en jaune,
et la commande Loop est surlignée / sélectionnée en bleu...
Sub CombineTextFiles()
Dim xFilesToOpen, i As Integer, xScreen As Boolean
xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Sélectionner vos fichiers", , True)
If TypeName(xFilesToOpen) = "Boolean" Then
MsgBox "No files were selected", , "Excel"
Else
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
For i = 1 To UBound(xFilesToOpen)
Application.StatusBar = i & " " & xFilesToOpen(i)
With Workbooks.Open(xFilesToOpen(i))
With .Sheets(1)
With .Columns("A:A")
.TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|"
End With
.Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
End With
End With
Next
Application.ScreenUpdating = xScreen
End If
End SubGénial,
et merci Bart !!
Je m'en vais essayer de comprendre maintenant... (j'apprends le Visual Basic depuis minutes environ 😂)
avec commentaire
Sub CombineTextFiles()
Dim xFilesToOpen, i As Integer, xScreen As Boolean
xFilesToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt", , "Sélectionner vos fichiers", , True) 'sélectionner les TXT voulus
If TypeName(xFilesToOpen) = "Boolean" Then 'rien choissi ou annuler
MsgBox "No files were selected", , "Excel"
Else '1 ou plusieurs fichiers
xScreen = Application.ScreenUpdating 'mémoriser état "screenupdating maintenant
Application.ScreenUpdating = False 'bloquer "screenupdating"
For i = 1 To UBound(xFilesToOpen) 'boucler les fichiers TXT
Application.StatusBar = i & " " & xFilesToOpen(i) 'montrer le progrès sur le statusbar
With Workbooks.Open(xFilesToOpen(i)) 'ouvrir ce fichier dans Excel
With .Sheets(1) 'la première feuille (et la seule)
'charactère pour séparer en colonnes est le "|"
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|"
.UsedRange.EntireColumn.AutoFit 'ajuster largeur colonnes
.Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 'déplacer comme nouvelle dernière feuille dans fichier actuel
End With
End With
Next
Application.ScreenUpdating = xScreen
End If
End Sub