[VBA Excel] Extraction de données fichier txt vers Excel et mise en forme
Bonjour à tous !
Je suis un nouvel entrant dans le langage VBA pour Excel. Mon problème est le suivant :
J'ai un fichier texte que voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 53 Create_E1Ttp ACTIVE 900 3
===================================================================
E1Ttp 3 pmEs
pmSes
pmUas
===================================================================
54 Create_PlugInUnit ACTIVE 900 1
===================================================================
PlugInUnit 1 pmProcessorLoad
===================================================================
55 Create_TdmTermGrp ACTIVE 900 3
===================================================================
TdmTermGrp 3 pmNrOfTdmTermsBusy
pmNrOfTdmTermsRej
pmNrOfTdmTermsReq |
Je dois le remettre en forme a l'aide de vba pour obtenir le résulat suivant :
le mot aprés create dans la colonne A, les pm qui lui sont associé dans la colonne b et ainsi de suite
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| *********************************
E1Ttp pmEs
pmSes
pmUas
**************************************
PlugInUnit pmProcessorLoad
***************************************
TdmTermGrp pmNrOfTdmTermsBusy
pmNrOfTdmTermsRej
pmNrOfTdmTermsReq
*************************************** |
Au fait chaque mot qui se trouve dérriere "Create_" est mis dans une colonne avec les compteurs qui lui sont associés dans une autre (ex colonne b).
Je dois le faire pour tout le fichier mais, en sortie, je n'arrive pas à avoir le résultat souhaité. J'ai fait plusieurs forums, lu plusieurs livres, j'ai commencé le vba il y a 3 semaines. Voici le code que j'ai pu obtenir après diverses recherches :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Option Explicit
Private Function ExtractDatas(ByVal sStringSearch As String, sValues() As String) As Boolean
Dim sContenu As String
Dim ff As Integer
Dim lPlacement As Long
Dim lFin As Long
Dim lIndex As Long
ff = FreeFile: lIndex = -1
Open "C:\Documents and Settings\Desktop\Counter_Analyser\log.txt" For Input As #ff
sContenu = input$(LOF(ff), #ff)
Close #ff
Do
lPlacement = InStr(lPlacement + 1, sContenu, sStringSearch)
If lPlacement > 0 Then
lFin = InStr(lPlacement + 1, sContenu, " ")
If InStr(lPlacement + 1, sContenu, vbCrLf) < lFin Then lFin = InStr(lPlacement + 1, sContenu, vbCrLf)
If lFin = 0 Then lFin = Len(sContenu)
lIndex = lIndex + 1
ReDim Preserve sValues(lIndex)
sValues(lIndex) = Mid$(sContenu, lPlacement + Len(sStringSearch), lFin - (lPlacement + Len(sStringSearch)))
Else
Exit Do
End If
Loop
ExtractDatas = True
End Function
Sub test()
Dim myValues1() As String, myValues2() As String, lIndex As Long
Dim i As Integer
If ExtractDatas("Create_", myValues1) Then
For lIndex = LBound(myValues1) To UBound(myValues1)
i = i + 1
Cells(i, 1).Value = myValues1(lIndex)
Next lIndex
Erase myValues1
End If
i = 0
If ExtractDatas("pm", myValues2) Then
For lIndex = LBound(myValues2) To UBound(myValues2)
i = i + 1
Cells(i, 2).Value = myValues2(lIndex)
Next lIndex
Erase myValues2
End If
End Sub |
J'ai en résultat ceci : le "pm" est coupé mais je ne voulais pas !! :
Code:
1 2 3 4 5 6
| E1Ttp Es
PlugInUnit Ses
TdmTermGrp Uas
Aal2Ap ProcessorLoad
Aal2Sp NrOfTdmTermsBusy
Aal2PathVccTp NrOfTdmTermsRej |
Quelqu'un peut-il m'aider ?????
Merci.