bonjour
tu as marqué le post comme résolu mais bon tu me pose quand même une question...
alors si pour toi racine = le dossier ou se trouve le fichier excel avec la macro voici une proposition mais n'ayant pas de fichier txt a tester reste a savoir si cela fonctionne....
Sub triage()
Dim tbi()
Dim tbs()
Dim Valinit As Integer
Dim lg
Dim i, j
Dim Wsd, Wbs
'importation du fichier txt
Set Wsd = ThisWorkbook.Sheets("log brut")
Wsd.[A3].CurrentRegion.ClearContents
Workbooks.OpenText Filename:=ThisWorkbook.Path & "\" & "log.txt", Origin _
:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Set Wbs = ActiveWorkbook
Wbs.Sheets(1).[A1].CurrentRegion.Copy Wsd.[A3]
Wbs.Close False
Valinit = Wsd.[C1]
'Traitement
tbi = Wsd.Range("A4:E" & Wsd.[E3].CurrentRegion.Rows.Count).Value
ReDim tbs(LBound(tbi, 1) To UBound(tbi, 1), LBound(tbi, 2) To UBound(tbi, 2))
lg = LBound(tbs, 1)
For i = LBound(tbi, 1) To UBound(tbi, 1)
If tbi(i, 5) >= Valinit Then
For j = LBound(tbi, 2) To UBound(tbi, 2)
tbs(lg, j) = tbi(i, j)
Next j
lg = lg + 1
End If
Next i
With Sheets("log filtrée")
'efface les données présentes sur la feuille de sortie
.[A1].CurrentRegion.ClearContents
'colle les données
.[A2].Resize(UBound(tbs, 1), UBound(tbs, 2)) = tbs
'copie de l'entete
Wsd.[A3:E3].Copy .[A1]
'filtrage par ordre croissant
.[A1:E4].AutoFilter
.Range("A1:E" & .[A1].CurrentRegion.Rows.Count).Sort Key1:=.[E1], Order1:=xlDescending, Header:=xlGuess
.AutoFilterMode = False
.Copy
'ChDir "C:\Users\adrien\Dropbox\carto supra\Adrien Roussel - LOGS"
' ActiveWorkbook.SaveAs Filename:="C:\Users\adrien\Dropbox\carto supra\Adrien Roussel - LOGS\TRIAGE LOG.txt", FileFormat:=xlText, AddToMRU:=False
ActiveWorkbook.SaveAs Filename:="ThisWorkbook.Path & " \ " & TRIAGE LOG.txt", FileFormat:=xlText, AddToMRU:=False
ActiveWorkbook.Close savechanges:=False
End With
' A voir si cela est necessaire
' ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\" & "TRIAGE LOG.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
mais l'import du fichier txt dans le fichier contenant la macro est-il obligatoire ?? sinon on peut simplement mettre les données en mémoire sans les copiées dans ce fichier
Fred