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-,

Peux-tu essayer avec les fichiers que je joins?

Tu créés un nouveau dossier, et tu les dézippes dans ce dossier, puis tu lances la macro, en appuyant sur le bouton "GO"

Pour voir....
 

Pièces jointes

  • Ri.zip
    11.3 KB · Affichages: 34
  • Ri.zip
    11.3 KB · Affichages: 35
  • Ri.zip
    11.3 KB · Affichages: 35

Djilow

XLDnaute Junior
Re : Traitement de fichier

Il me sort la même erreur ...
De quoi cela peut-il venir ?

Alors j'ai encore une mauvaise blague...
Dans certains de mes fichiers il y a des cartes commençant par 8DG
Pour ces cartes il faudrait faire la même manipulation que sur les 3AL c'est à dire récupérer les 10 premiers caractères dans une cellule et les 4 autres dans la suivante :(

J'ai rajouté cela pour traiter mon problème
Code:
ElseIf Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "8DG" Then
                        Tblo(4) = Left(Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":"))), 10)
                        Tblo(5) = Trim(Right(Ligne, 4))
Est-ce correct ?
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

Bizarre, bizarre....

Si quelqu'un du forum pouvait essayer le code, avec les fichiers joints dans mon précédent post, je lui en saurai gré...

Pour les "8DG", pas de soucis, remplace la ligne :

Code:
If Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "3AL" Then

par celle-ci :

Code:
If Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "3AL" Or _
                            Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "8DG" Then

Euh, tu as quelle version d'Excel?

Edit, je viens de lire ta correction, c'est également correct, mais tu rajoutes 3 lignes, alors que moi, j'en rajoute aucune (à part le retour à la ligne.....) :p
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

Lorsque tu es dans l'éditeur VBE, peux-tu me donner les références cochées?

Tu cliques sur "Outils/Références", et tu me donnes la liste des références cochées...

Pour voir.....

J'ai essayé en 2003 et 2007, pas de soucis....

A titre d'infos, j'ai 4 références de cochées :

- Visual Basic for Application
- Microsoft Excel 12.0 Object Library (12 pour 2007, 11 pour 2003)
- OLE Automation
- Microsoft Office 12.0 Object Library (idem)

S'il t'en manque, cherches-les dans la liste, coche la case, et fais "OK"

Pour voir....
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Euh j'ai la même chose hormis le fait que la version des librairies est en 11.0 sur 2003
Et 12.0 sur le 2007
C'est quand même bizarre que tout fonctionne de ton côté et pas du mien ...
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

On va essayer autre chose....(après, je risque d'être à court d'idées.....)

Sur un fichier "*.ri", lorsque tu fais un clic droit dessus, et que tu fais :

"Ouvrir avec....", que te propose-t-il par défaut?

Pour ma part, c'est le Bloc Note...

Si ce n'est pas le cas chez toi, choisis le bloc note par défaut, fais le test, et si cela fonctionne, à la fin du traitement, tu peux reprendre ton logiciel par défaut...

Mais, ceci, vraiment à tout hasard....(je n'y crois pas trop.....)

Euh, quelles versions de Windows? (moi, c'est Vista)
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Les noms sont corrects
Je viens de modifier ton code et là il fonctionne correctement
Sub lireFichier_ri()
Dim Ligne As String
Dim LePath As String
Dim Fich As String
Dim Flag As Boolean
Dim Tblo(0 To 7)
Application.ScreenUpdating = False
Columns(1).Clear
LePath = ThisWorkbook.Path & "\" ' à adapter
Fich = Dir(LePath & "*.ri")
Do While Fich <> ""
X = LePath & Fich
Open X For Input As #1

[A65000].End(xlUp)(2) = Fich
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)
Tblo(7) = CDate(Mid(Ligne, InStr(1, Ligne, "at") + 3, 10))
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" Then
Tblo(4) = Left(Trim(Right(Ligne, Len(Ligne) - InStr(1, Ligne, ":"))), 10)
Tblo(5) = Trim(Right(Ligne, 4))
ElseIf Mid(Ligne, InStr(1, Ligne, ":") + 2, 3) = "8DG" 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, ":")))
[A65000].End(xlUp)(2) = Join(Tblo, ";")
End If
Loop
Close #1
Fich = Dir
Flag = False
Loop
Columns("A").AutoFit
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\GZSF1202\Desktop\POPO\test.csv", FileFormat:=xlCSV, CreateBackup:=False
End Sub

Cette fois-ci cela fonctionne correctement en revanche serait-il possible d'enlever la ligne avec le nom des fichiers (exemple 2100_1.ri, 2100_2.ri et toutes les suivantes)
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

Bizarre autant qu'étrange, mais le principal, c'est que cela fonctionne....

Pour le nom des fichiers, j'avais mis pour le fun, supprime la ligne :

Code:
[A65000].End(xlUp)(2) = Fich

Juste en dessous de "Open...."

Nota 1 : pour poster du code, utilise plutôt la balise notée #

Nota 2 : Dis-moi si cela a fonctionné avec tous tes fichiers, et si cela n'a pas été trop longtemps...

Combien de fichiers?
Pour mesurer le temps, rajoute ces 3 lignes (en rouge) :

Code:
Dim Tblo(0 To 7)
[COLOR="Red"]Dim T
T = Timer[/COLOR]
Application.ScreenUpdating = False
....
....
Columns("A").AutoFit
ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\GZSF1202\Desktop\POPO\test.csv", FileFormat:=xlCSV, CreateBackup:=False
[COLOR="Red"]MsgBox Timer - T[/COLOR]
End Sub
 

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

modifie juste la "presque" dernière ligne :

Code:
ActiveWorkbook.SaveAs Filename:=LePath & "carte.csv", FileFormat:=xlCSV

On y arrive, on y arrive....(Pfiou, déjà 00H30, debout à 05H30, je donnerai ton nom à mon chef..... :D:D)
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa