Bonjour Bonne année 2014,
Avant de vous exposer mon probleme , je tenais a vous remercier d'avance pour votre participation.
Pour extraire des données à partir des fichiers texts et de les afficher sous excel( concaténation de donnés). j'ai crée une fonction qui me permettrais d'accéder au fichiers textes, de les selectionner, traiter et d'afficher leur données une apres l'autre sur une feuille excel.
La fonction marche partiellement, elle me permet de verifier le format des fichiers sélectionnés mais j'arrive pas a afficher les données de tous les fichiers sélectionnés.
Ci joint mon code , fichiers textes contenants les données a extraire , exemple d'affichage attendue (faite manuellement
Avant de vous exposer mon probleme , je tenais a vous remercier d'avance pour votre participation.
Pour extraire des données à partir des fichiers texts et de les afficher sous excel( concaténation de donnés). j'ai crée une fonction qui me permettrais d'accéder au fichiers textes, de les selectionner, traiter et d'afficher leur données une apres l'autre sur une feuille excel.
La fonction marche partiellement, elle me permet de verifier le format des fichiers sélectionnés mais j'arrive pas a afficher les données de tous les fichiers sélectionnés.
Ci joint mon code , fichiers textes contenants les données a extraire , exemple d'affichage attendue (faite manuellement
Code:
Sub Select_fichier_QStat()
Dim fn As Variant
Dim i&
Dim TbFn$(), ff%, s$
Dim num1 As Integer
Dim nim2 As Integer
Dim diff As Integer
Dim detect As Boolean
Dim strCount As String
'-----------------------------------
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'sélection des fichiers txt à traiter
fn = Application.GetOpenFilename("Fichiers textes (*.txt), *.txt", , , , True)
If TypeName(fn) = "Boolean" Then Exit Sub 'quitter si annuler
'nouvelle feuille
'Sheets.Add
detect = True
'fichiers à ouvrirs
ReDim TbFn(1 To UBound(fn))
'Traitement des fichiers
For i = 1 To UBound(fn)
TbFn(i) = fn(i) 'fichier en cours
ff = FreeFile
Open TbFn(i) For Input As #ff 'ouverture
Do Until EOF(ff) 'tant que fin du fichier non atteinte
Line Input #ff, s 'lire une ligne
If Left(s, 3) = "EV|" Then
'Controle sur le Event
'Nbre |
num1 = Len(s)
strCount = Replace(s, "|", "")
num2 = Len(strCount)
diff = num1 - num2
If diff = 35 Then
detect = True
Else
MsgBox "Erreur - Le champ EV contient " & diff & " | au lieu de 35"
detect = False
End If
End If
If Left(s, 3) = "ME|" Then
'Controle sur la mesure
'Nbre |
num1 = Len(s)
strCount = Replace(s, "|", "")
num2 = Len(strCount)
diff = num1 - num2
If diff = 19 Then
detect = True
Else
MsgBox "Erreur - Le champ ME contient " & diff & " | au lieu de 19"
detect = False
End If
End If
If Left(s, 3) = "TD|" Then
'Controle sur les limites
'Nbre |
num1 = Len(s)
strCount = Replace(s, "|", "")
num2 = Len(strCount)
diff = num1 - num2
If diff = 18 Then
detect = True
Else
MsgBox "Erreur - Le champ EV contient " & diff & " | au lieu de 18"
detect = False
End If
End If
Loop
Close #ff 'fermeture
Next i
If detect = False Then
MsgBox "Erreur - Une ou plusieurs lignes sont erronnées"
Else
MsgBox "Les Fichiers Qstat sont corrects !!"
End If
' Affichage
Dim cpt As Integer
Dim Tableau() As String
cpt = 1
For cpt = 1 To UBound(fn)
TbFn(cpt) = fn(cpt) 'fichier en cours
If detect = True Then
ff = FreeFile
Worksheets("Feuil1").Select
'Entete
Cells(5, 1) = "Pas de Test"
Cells(6, 1) = "Données Numérique"
'---------------------
'ouverture du fichier
Open TbFn(cpt) For Input As ff
While Not EOF(ff)
Line Input #ff, s
If Left(s, 3) = "ME|" Then
'on incrémente la ligne d'ecriture
cpt = cpt + 1
'on decompose
Tableau = Split(s, "|")
'on ecrit
Cells(5, cpt) = Tableau(4)
Cells(6, cpt) = Tableau(6)
End If
Wend
Close #ff
End If
Next cpt
End Sub