Traitement de fichier

Djilow

XLDnaute Junior
Bonjour
Étant novice dans les macro je viens vous demander de l'aide
J'ai un fichier 2000_1.ri contenant des infos de ce style
Fri Jul 2 11:09:11 2010
- Page: 1
S:SAVINESSV5_001:ne1696MS 3.0 Remote Inventory

Board User Label :r01sr1/board#01
Board Location :
Board Type : ESC
ALCATEL Company : ASHB
CLEI Code : WMUCA2KBAA
Unit Part Number : 3AL86661ACAA02
Software Part Number: 3AL95155AAAA02
Serial Number : YP1002085E5
Unit Type : ESC
Factory Identifier : YP
Date Identifier : 00 - Date of final test
Date : 10/02/24
Operator Data : --------------------------------
------------------------------------------------------------------------------

Board User Label :r01sr1/board#03
Board Location :
Board Type : OMDX8100_M_L1_XS_NOSPV
ALCATEL Company : ASHB
CLEI Code : WMD5H0KCAA
Unit Part Number : 3AL86615AAAF01
Software Part Number: --------------
Serial Number : YP1008071D9
Unit Type : OMDX8100
Factory Identifier : YP
Date Identifier : 00 - Date of final test
Date : 10/02/28
Operator Data : --------------------------------
------------------------------------------------------------------------------
J'aimerais créer une macro me permettant de traiter ce fichier et de le mettre au format .csv sous la forme suivante
Code:
/r01sr1/board#01;S:SAVINESSV5_001;;ESC;3AL86661AC;AA02;YP1002085E5;Fri Jul  2 11:09:11 2010
/r01sr1/board#03;S:SAVINESSV5_001;;OMDX8100_M_L1_XS_NOSPV;3AL86615AA;AF01;YP1008071D9;Fri Jul  2 11:09:11 2010
Quelqu'un aurait il une idée à me proposer sachant que mon fichier comporte x ligne
Merci d'avance
 

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

il ressort rien du tout

Grrrrrrrr!!!!!

Quand tu fais pas à pas, du moins pour le premier fichier (tu auras un certain nombre de F8 à faire, jusqu'à la ligne :

Code:
[A65000].End(xlUp)(2) = Join(Tblo, ";")

et en plaçant ta souris, à chaque ligne, sur Tblo(1), Tblo(7)...., que se passe-t-il?

Il faut que la ligne ne soit plus en "surligné" jaune, pour voir l'info-bulle...
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

En remettant la ligne d'affichage du nom de fichier
Il ressort le nom de chacun des fichiers mais c'est tout...
Et pour la date on ne récupère pas ce qu'il faut moi je veux la date de la carte pas la date du fichier

En mode pas à pas la boucle ne semble tourner qu'une fois dans le fichier et passer au suivant ...
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

Euh, ben non, pas du tout, ils n'ont pas les retours à la ligne....

Et dans mon code, on lit ligne par ligne....

et là, tu n'en as qu'une...

Tout est à revoir...

Désolé, mais ce sera pas pour aujourd'hui...
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Je viens de me rendre compte que le fichier n'est pas importé de la même façon sur mon PC suivant si je les importent avec Filezilla ou avec un script batch.
Avec Filezilla les fichiers sont ramenés sans retour à la ligne.
Tandis qu'avec mon script les fichiers possèdent bien les sauts de lignes ce qui permet ton traitement.
Merci beaucoup
 

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

bonsoir,

J'ai essayé de modifier le code, concernant la date, mais je ne sais pas sous quel format elle se trouve....

tu mets "07/12/05", mais dans certaines lignes, la date est de "07/11/29"

Tu me confirmes, qu'on parle bien de l'année 2029?

@ te relire....
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Bonsoir
Euh non la date est en format Anglais donc 07/11/29 signifie en qu'en Français la date est 29/11/2007
Après peut importe le format de la date Anglais ou Français me conviendra parfaitement :D

Merci à toi
 

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

le code, j'espère, final : :cool:

Code:
Sub lireFichier_ri()
Dim Ligne As String
Dim LePath As String, LaDate As String
Dim Fich As String, X As String
Dim Flag As Boolean
Dim Tblo(0 To 7)
Application.ScreenUpdating = False
Columns(1).Clear
LePath = ThisWorkbook.Path & "\"
Fich = Dir(LePath & "*.ri")
X = LePath & Fich
Do While Fich <> ""
    Open X For Input As #1
        Do While Not EOF(1)
            Line Input #1, Ligne
                If Not Flag Then
                    Tblo(1) = Mid(Ligne, InStr(1, Ligne, "<") + 1, InStr(1, Ligne, ">") - InStr(1, Ligne, "<") - 1)
                    Flag = True
                ElseIf Trim(Ligne) Like "USER LABEL*" Then
                    Tblo(0) = "/" & Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, "/")))
                ElseIf Trim(Ligne) Like "LOCATION NAME*" Then
                    Tblo(2) = Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":")))
                ElseIf Trim(Ligne) Like "Unit type*" Then
                    Tblo(3) = Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":")))
                ElseIf Trim(Ligne) Like "Unit part number*" Then
                    If Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "3AL" Or _
                            Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "3AL" Then
                        Tblo(4) = Left(Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":"))), 10)
                        Tblo(5) = Trim(Right(Ligne, 4))
                    Else
                        Tblo(4) = Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":")))
                        Tblo(5) = ""
                    End If
                ElseIf Trim(Ligne) Like "Serial number*" Then
                    Tblo(6) = Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":")))
                ElseIf Trim(Ligne) Like "Date*" Then
                    LaDate = Right(Ligne, 8)
                    Tblo(7) = CDate(Right(LaDate, 2) & "/" & Mid(LaDate, 4, 2) & "/" & Left(LaDate, 2))
                    [A65000].End(xlUp)(2) = Join(Tblo, ";")
                End If
        Loop
    Close #1
    Fich = Dir
    Flag = False
Loop
Columns("A").AutoFit
Rows(1).Delete
Sheets(1).Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=LePath & "carte.csv", FileFormat:=xlCSV
ActiveWorkbook.Close
End Sub

Nota : je supprime la 1ère ligne (qui est vide), je copie la feuille, et je l'enregistre en carte.csv, comme cela ton fichier excel reste tel quel....

PS, tu n'oublies pas de me donner le temps de traitement de tes 943 fichiers.... ;)
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Petite question: Pourquoi as ton dans notre classeur une copie des données faites lors de l'éxécution de la macro ? Si j'enregistre mon fichier où se trouve ma macro sa taille va grossir considérablement
Peut-on faire en sorte de ne pas modifier le fichier ?
 

Statistiques des forums

Discussions
312 195
Messages
2 086 079
Membres
103 112
dernier inscrit
cuq-laet