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
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Euh je voudrais que les données soit enregistrées au format .csv
Et concernant le contenu du fichier original il sera de la sorte avec bien sur des chapitres en plus
Code:
uploadRemoteInventory started at 2010/07/01 06:17:19 on <MARSL_MANOSQUE_0001>
 USER LABEL          : MARSL_MANOSQUE_0001/r01sr1/board#01
 LOCATION NAME       : 
ELEMENT IDENTIFICATION
 ALCATEL company : AITA
 Unit type : ESC     
 Unit part number : 3AL86661ABAA03
 Software part number : 3AL95155AAAA02
 CLEI code : WMUCA2JBAA
MANUFACTURING INFORMATION
 Manufacturing plant : EZ  
 Serial number : EZ074533943     
 Date (00) : 07/12/05
OPERATOR INVENTORY DATA
 ----------------------------------------------

 USER LABEL          : MARSL_MANOSQUE_0001/r01sr1/board#02
 LOCATION NAME       : 
ELEMENT IDENTIFICATION
 ALCATEL company : AITA
 Unit type : OMDX8100
 Unit part number : 3AL86615ABAE01
 Software part number : --------------
 CLEI code : WMD5H0LCAA
MANUFACTURING INFORMATION
 Manufacturing plant : EZ  
 Serial number : EZ081932136     
 Date (00) : 08/05/15
OPERATOR INVENTORY DATA
 ----------------------------------------------
Merci d'avance
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Ah pardon je n'avais pas compris la question :confused:
Voici la forme que j'aimerais récupérer
/r01sr1/board#01;MARSL_MANOSQUE_0001;;ESC;3AL86661AB;AA03;EZ074533943;07/12/05
Merci d'avance pour le temps que tu passes à résoudre mon soucis :D

PS: un espace ce met juste avant EZ074533943 dans ma citation je ne sais pas pk ...
Le must serait de transformer la date 07/12/05 au format FR c'est à dire 05/12/07
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

J'espère que tout est bon....

Nan, fallait pas rêver.....:D

J'ai un souci, pour les "Unit Part Number"....

Dans certains cas :

3AL86625ABAA03

soit 14 caractères

et dans d'autres :

Code:
1AB196370006

Soit 12...

Dans ton texte voulu, quelle est la condition :

/r01sr1/board#01;MARSL_MANOSQUE_0001;;ESC;3AL86661AB;AA03; EZ074533943;07/12/05

Ce qui est en rouge, forcément à 4 caractères, ou ce qui est en vert, à 10 caractères?
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Alors je n'avais jamais fait attention à cela alors en fait il se trouve qu'il existe deux codifications différentes, je m'explique
Pour les codes commençant par 3AL il faut que je récupère toujours les dix premiers caractères.
En revanche pour les codes commençant par 1AB il faut que je récupère le code tel quel, ce qui engendre que la cellule suivante est vide
Pour aider à me faire comprendre, pour une carte 1AB je voudrais obtenir quelque chose de la forme suivante:
/r01sr1sl08/daughter#01;MARSL_MANOSQUE_0001;;S16_1__D;1AB196370006;;336210073908021;07/09/27
En sachant que le chapitre était celui-ci:
USER LABEL : MARSL_MANOSQUE_0001/r01sr1sl08/daughter#01
LOCATION NAME :
ELEMENT IDENTIFICATION
ALCATEL company : AITA
Unit type : S16_1__D
Unit part number : 1AB196370006
Software part number : FTM-3125C-L15E
CLEI code : ----------
MANUFACTURING INFORMATION
Manufacturing plant : ----
Serial number : 336210073908021
Date (00) : 07/09/27
OPERATOR INVENTORY DATA
----------------------------------------------

J'espère que je t'ai aidé
 
Dernière édition:

Djilow

XLDnaute Junior
Re : Traitement de fichier

Écoute à priori pas d'autre surprise pour le moment :eek:
Par contre serait-il possible par la suite d'adapter le code pour qu'il fasse le traitement d'une multitude fichiers et que le traitement permettent l'enregistrement de toutes les données dans un seul et même fichier ?
En tout cas merci beaucoup pour le boulot que tu réalise ;)
 

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

En tout cas merci beaucoup pour le boulot que tu réalise

Euh, attends, tu ne l'as pas encore vu....

l'enregistrement de toutes les données dans un seul et même fichier

C'était une donnée que je n'avais pas, que je comptais te demander, mais comme tu sais le faire, tu n'as qu'à rajouter la ligne de commande que tu as déjà jointe en toute fin de code

Le code que je te propose (qui liste tous les fichiers "*.ri" du répertoire actif), répertoire que tu peux définir dans le code...
Si tu redéfinis le répertoire (LePath = .......), n'oublie pas l'anti-slash ("\") à la fin....

Code:
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 <> ""
    Open Fich 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))
                    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
End Sub

Bon, à toi de bosser, maintenant....:p
 

Djilow

XLDnaute Junior
Re : Traitement de fichier

Merci bhbh
Par contre je viens de tester le code il se trouve qu'il y a un problème
L'exécution me retourne une erreur à la ligne
Open Fich For Input As #1
Quel est le problème ?
Il me dit
Erreur d'exécution '53':
Fichier introuvable
Sachant que j'ai copié la macro dans le même dossier que les fichier .ri
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Traitement de fichier

Re-,

On va dérouler pas à pas....

Dans le VBE, clique n'importe où dans le code, et appuie sur la touche F8 (tu passes alors en mode pas-à-pas)

Puis, tu appuies (toujours sur F8) jusqu'à ce que la ligne surlignée en jaune arrive à cette ligne :

Code:
Do While Fich <> ""

Et là, tu passes ta souris sur le Fich, de la ligne du dessus

Donnes-moi le texte de l'info-bulle
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16