IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro ouverture et analyse fichier texte


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Macro ouverture et analyse fichier texte
    Bonjour et merci d'avance pour l'aide,

    Je cherche depuis plusieurs jours à réaliser une macro permettant de :
    - ouvrir un fichier texte (fichier pouvant être "log" ou "log.txt")
    - lecture de chaque ligne afin de les intégrer à un tableau dynamique (nombre de ligne aléatoire)
    - ouverture tableau dynamique et récupération des données :

    _____Fichier avant macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    2018-05-30|21:02:46| Mission (1132)|INFO| Départ n°204 mission robo1
    2018-05-30|21:07:02|    STEP1(0019)|INFO| blabla robo1
    2018-05-30|21:07:03|   	blabla(0014)|INFO| blabla
    2018-05-30|21:07:03| Mission (0530)|INFO| Fin n°200 mission robo4
    2018-05-30|21:07:04|	blabla(0017)|INFO| blabla
    2018-05-30|21:10:31|    STEP2(0080)|INFO| blabla robo1
    2018-05-30|21:10:33|   	blabla(0012)|INFO| blabla
    blabla
    2018-05-30|21:10:40| Mission (1132)|INFO| Départ n°205 mission robo2
    2018-05-30|21:14:05|    STEP3(0019)|INFO| blabla robo1
    2018-05-30|21:14:06|   	blabla(0012)|INFO| blabla
    2018-05-30|21:16:02|    STEP1(0019)|INFO| blabla robo2
    2018-05-30|21:20:12|    STEP4(0080)|INFO| blabla robo1
    2018-05-30|21:20:06|   	blabla(0012)|INFO| blabla
    2018-05-30|21:21:02|    STEP2(0080)|INFO| blabla robo2
    2018-05-30|21:21:03|    STEP3(0019)|INFO| blabla robo2
    2018-05-30|21:25:21| Mission (0530)|INFO| Fin n°204 mission robo1
    2018-05-30|21:21:02|    STEP4(0080)|INFO| blabla robo2
    _____Fichier après macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    2018-05-30|21:07:03| Mission (0530)|INFO| Fin n°200 mission robo4
    2018-05-30|21:02:46| Mission (1132)|INFO| Départ n°204 mission robo1
    2018-05-30|21:07:02|    STEP1(0019)|INFO| blabla robo1
    2018-05-30|21:10:31|    STEP2(0080)|INFO| blabla robo1
    2018-05-30|21:14:05|    STEP3(0019)|INFO| blabla robo1
    2018-05-30|21:20:12|    STEP4(0080)|INFO| blabla robo1
    2018-05-30|21:25:21| Mission (0530)|INFO| Fin n°204 mission robo1
    2018-05-30|21:10:40| Mission (1132)|INFO| Départ n°205 mission robo2
    2018-05-30|21:16:02|    STEP1(0019)|INFO| blabla robo2
    2018-05-30|21:21:02|    STEP2(0080)|INFO| blabla robo2
    2018-05-30|21:21:03|    STEP3(0019)|INFO| blabla robo2
    2018-05-30|21:21:02|    STEP4(0080)|INFO| blabla robo2
    Je n'arrive pas à gérer les tableaux et à écrire sur un autre fichier. Sachant que j'ai des fichiers à 50000/60000 lignes j'essaie d’optimiser le code mais je crains d'être aller au delà de mes compétences.
    Je dois mal faire certaine fonction...

    Mon code VBA est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    Sub lecturefichier()
     
    Dim intFic As Integer
    Dim intFic2 As Integer
    Dim strLigne As String
    Dim ligne_log As Integer
    Dim DateHeure As Date
    Dim detaillog As String
    Dim TypeLog As String
    Dim Tab_log_brut_brut() As Variant
    Dim Tab_log_brut_net()
    Dim compteur_tab As Integer
    Dim compteur_lecture_1 As Integer
    Dim compteur_tab_net As Integer
     
    intFic = FreeFile
    intFic2 = FreeFile
     
    'ouverture fichier
    Open ThisWorkbook.Path & "\Fichier avant macro" For Input As intFic
     
    'intégration dans un tableau
    compteur_tab = 0
    While Not EOF(intFic)
        Line Input #intFic, strLigne
        Tab_log_brut(compteur_tab) = strLigne
        compteur_tab = compteur_tab + 1
    Wend
    Close intFic
     
    compteur_tab_net = 0
     
    '1er lecture du tableau pour rechercher les débuts de missions
    For compteur_tab = 0 To UBound(Tab_log_brut())
        LectureTab = Tab_log_brut(compteur_tab)
    'prise en compte du cas retour à la ligne blabla
            If InStr(1, LectureTab, "|", 0) <> 0 Then
     
                TypeLog = Split(LectureTab, "|")(2)
                TypeLog = Replace(TypeLog, " ", vbNullString)
     
    'lecture suivante pour rechercher les steps et la fin de mission
                If TypeLog = "Mission(1132)" Then
     
                compteur_lecture_1 = compteur_tab
                Tab_log_brut (compteur_lecture_1)
     
                DateLog = Split(LectureTab, "|")(0)
                HeureLog = Split(LectureTab, "|")(1)
                DateHeure = CDate(DateSerial(Split(DateLog, "-")(0), Split(DateLog, "-")(1), Split(DateLog, "-")(2)) + CDate(HeureLog))
                detaillog = Split(LectureTab, "|")(4)
     
    'intégration données au tableau
                             Select Case TypeLog
                                    Case Is = "Mission(1132)"
                                    Tab_log_net(compteur_tab_net) = DateHeure & "|" & TypeLog & "|" & detaillog
                                    compteur_tab_net = compteur_tab_net + 1
                                    Case Is = "(0019)"
                                    Tab_log_net(compteur_tab_net) = DateHeure & "|" & TypeLog & "|" & detaillog
                                    compteur_tab_net = compteur_tab_net + 1
                                    Case Is = "(0080)"
                                    Tab_log_net(compteur_tab_net) = DateHeure & "|" & TypeLog & "|" & detaillog
                                    compteur_tab_net = compteur_tab_net + 1
                                    Case Is = " mission(0530)"
                                    Tab_log_net(compteur_tab_net) = DateHeure & "|" & TypeLog & "|" & detaillog
                                    compteur_tab_net = compteur_tab_net + 1
                                    'sortir du case pour revenir à la lecture
     
                                    Case Else
                                    'autre cas
                             End Select
                compteur_lecture_1 = compteur_lecture_1 + 1
                End If
     
            End If
     
     
    compteur_lecture_1 = compteur_lecture_1 + 1
     
     
    'ouverture/création du fichier après macro
            Open ThisWorkbook.Path & "\Fichier après macro.txt" For Append As intFic2
                For compteur_tab = 0 To UBound(Tab_log_net())
                    Print #intFic2, Tab_log_net(compteur_tab)
                Next
            Close intFic2
     
    End Sub
    L'idée c'est de calculer la durée de la mission et de chaque step sur un prochain code de synthèses et de récolter les différentes erreurs pouvant apparaître au long de la mission.

    Je suis ouvert à toutes suggestions si mon code n'est pas optimisé.

    J'espère avoir été assez clair...

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Une méthode qui va grandement te faciliter la vie : https://msdn.microsoft.com/fr-fr/vba...t-method-excel
    C'est beaucoup plus simple que le traitement séquentiel.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Une méthode qui va grandement te faciliter la vie : https://msdn.microsoft.com/fr-fr/vba...t-method-excel

    C'est beaucoup plus simple que le traitement séquentiel.

    Merci, j'avais utilisé cette fonction dans le passé mais en faisant un copier coller sans regarder les fonctionnalités...
    Si je comprend bien au lieu de passer par une ouverture/intégration dans un tableau/repartir dans une boucle...
    Je me contente de l'ouvrir en :
    Workbooks.OpenText filename:="monfichier.TXT", avec les paramètres pour raccourcir mon code et gérer les lignes direct avec la fonctionnalité?

    Je vais regarder ce soir si je peux, je reviens vite pour donner des nouvelles. A bientôt.

    PS: pour dormir moins bête pourquoi le Ubound et mes tableaux ne fonctionnait pas ?

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonsoir
    pour dormir moins bête pourquoi le Ubound et mes tableaux ne fonctionnait pas ?
    tes tableaux sont déclarés, mais ne sont pas dimensionnés, n'ont donc aucun index et ne peuvent en conséquence recevoir aucune donnée.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Twarn Voir le message
    Je me contente de l'ouvrir en :
    Workbooks.OpenText filename:="monfichier.TXT", avec les paramètres pour raccourcir mon code et gérer les lignes direct avec la fonctionnalité?
    C'est ça.
    Mais dans l'aide que j'ai mise en lien, prends le temps de bien regarder les paramètres Type de données et FieldInfo et aussi, dans une moindre mesure, DecimalSeparator et quelques autres.
    Ca permet vraiment de faire très simplement des uploads assez complexes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Bonjour à tous,

    Je reviens vers vous, tout fonctionne à merveille merci #Menhir et #unparia. J'ai mis un peu de temps à le faire mais bon...
    - Est-il possible d'ouvrir tout une série de fichier texte à la suite? car les fichier d'origine se coupent automatiquement selon la taille, ce qui fait qu'après analyse d'un fichier j'ai des mission que je ne peux analyser (départ mission --> fichier 1/fin mission --> fichier 2).
    - Pour fermer le fichier ouvert via : Workbooks.OpenText peut-il être fermer via un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ActiveSheet.close

    Voici mon code pour ceux qui trouverons ça utile, si cela peux aider certain. Bon toutes les variables ne sont pas déclarer mais c'est en cours....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
     
    Sub Macro_encours()
     
    Dim strLigne As String
    'Dim Tab_log(5) As Variant
    Dim ligne_log As Integer
    Dim TypeLog As String
    Dim intFic2 As Integer
    Dim detailmission As String
    intFic2 = FreeFile
     
     
    'Dim Chercherob As Integer
     
    ' ------------- OUVRE FICHIER LOG AVEC Mise En Forme -------------
     
    Workbooks.OpenText Filename:=ThisWorkbook.Path & "\fichier_analyse", Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, Other:=True, OtherChar:="|", Local:=True, Semicolon:=False, Fieldinfo:=Array(1, 5)
    Application.ActiveSheet.Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'suppression des lignes non cohérente (retour à la ligne sans heures)
     
    i = 1 'ligne du fichier log à lire
     
    'i = 2419
    ' ------------- CREATION DU FICHIER TEXTE -------------
    Nomfichiertext = "Analyse " & Replace(Replace(Now, "/", "-"), ":", ".") & ".txt"
    Open ThisWorkbook.Path & "\" & Nomfichiertext For Append As intFic2
    ' ------------- CREATION DU FICHIER TEXTE -------------
    Do Until Application.ActiveSheet.Cells(i, 3) = ""
     
        Code_log = Replace(Cells(i, 3), " ", "")
     
        If Code_log = "0012" Then
    '_____ prise info départ mission _____
        Code_log = Replace(Cells(i, 3), " ", "")
        detailmission = Cells(i, 5)
        rob_deb = Chercherob(detailmission)
        Datedeb = Cells(i, 1) + Cells(i, 2)
        Nom_mission = Split(detailmission, "'")(1)
     
     
    '_____ analyse de la ligne en cours ____
        i_navigation = i + 1
        Code_log = Replace(Cells(i_navigation, 3), " ", "")
        detailmission = Cells(i_navigation, 5)
        rob_encours = Chercherob(detailmission)
     
                                 Do
                                    Code_log = Replace(Cells(i_navigation, 3), " ", "")
                                    detailmission = Cells(i_navigation, 5)
                                    rob_encours = Chercherob(detailmission)
                                        If rob_deb = rob_encours Then
     
                                                Select Case Code_log
     
                                                        Case Is = "0001" 'Step1 ou step2
     
                                                            DateLog = Cells(i_navigation, 1) + Cells(i_navigation, 2)
                                                            Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                                            If InStr(1, detailmission, "pickElevated", 1) <> 0 Then stepmission1 = Destination Else stepmission3 = Destination
     
                                                        Case Is = "0002" 'Step1 ou step2
     
                                                            DateLog = Cells(i_navigation, 1) + Cells(i_navigation, 2)
                                                            Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                                            If InStr(1, detailmission, "pickElevated", 1) <> 0 Then stepmission1 = Destination Else stepmission3 = Destination
     
                                                        Case Is = "0003" 'Step3 ou step4
     
                                                            DateLog = Cells(i_navigation, 1) + Cells(i_navigation, 2)
                                                            Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                                            If InStr(1, detailmission, "dropElevated", 1) <> 0 Then stepmission4 = Destination Else stepmission2 = Destination
     
                                                        Case Is = "0004" 'Step3 ou step4
     
                                                            DateLog = Cells(i_navigation, 1) + Cells(i_navigation, 2)
                                                            Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                                            If InStr(1, detailmission, "dropElevated", 1) <> 0 Then stepmission4 = Destination Else stepmission2 = Destination
     
                                                        Case Is = "005" 'Statut de la mission (Done/Cancel)
                                                            Statut_mission = "Cancel"
     
                                                        Case Is = "0010" 'fin
                                                            Datefin = Cells(i_navigation, 1) + Cells(i_navigation, 2)
                                                               ' ligne_log = ligne_log + 1
                                                            dureemission = Datefin - Datedeb
                                                            num_mission = Split(detailmission, " ")(3)
                                                            'rob_fin = "rob" & Right(DetailMission, 3)
                                                            Exit Do
     
                                                        Case Else
     
                                                            '   [ Continue Do ]
                                                            '   [ Exit Do ]
                                                End Select
                                                i_navigation = i_navigation + 1
                                            Else
     
                                    i_navigation = i_navigation + 1
     
                                            End If
     
                                Loop Until Code_log = "0010" And rob_deb = rob_encours
     
     
     
        'Debug.Print Nom_mission & ";" & rob_deb & ";" & num_mission & ";" & Datedeb & ";" & Datefin & ";" & dureemission & ";" & stepmission1 & ";" & stepmission2 & ";" & stepmission3 & ";" & stepmission4
        Print #intFic2, Nom_mission & ";" & rob_deb & ";" & num_mission & ";" & Datedeb & ";" & Datefin & ";" & dureemission & ";" & stepmission1 & ";" & stepmission2 & ";" & stepmission3 & ";" & stepmission4
     
        'Vider variable
     
     
        Else
     
     
        End If
        i = i + 1
         '   [ Continue Do ]
         '   [ Exit Do ]
        num_mission = 0
        Datefin = 0
        stepmission1 = 0
        stepmission2 = 0
        stepmission3 = 0
        stepmission4 = 0
    Loop
     
     
    End Sub
    Merci encore.

  7. #7
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    Salut

    Pour ce qui est du code en lui même, il y a possibilité de simplifier le select case (d'ailleurs je me demande s'il n'y aurait pas des erreurs dans les stepmission1,2,3,4). Toujours est-il la structure de code est très similaire dans les case 0001, 0002, 0003, 0004, il est donc possible de juste configurer les variables qui change et de les insérer dans un bloc de code commun.

    Attention avec l'utilisation de ActiveSheet, ActiveWorkbook, Active..., si jamais au cours de la macro quelqu'un clique sur un autre document, la macro continue de s'exécuter mais directement sur le nouveau document actif... ça peut faire très mal surtout que Ctrl+Z ne fonctionne pas sur Excel pour des actions réalisés à partir de VBA.

    Voila une reprise du code. Si tu nous en dit un peu plus, il doit y avoir matière à simplifier d'avantage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    'Oblige à décarer toute les variables
    Option Explicit
     
    Sub Macro_encours()
     
    Dim strLigne As String
    'Dim Tab_log(5) As Variant
    Dim ligne_log As Integer
    Dim TypeLog As String
    Dim intFic2 As Integer
    Dim detailmission As String
    intFic2 = FreeFile
     
    Dim NewDocument As Workbook
     
    'Dim Chercherob As Integer
     
    ' ------------- OUVRE FICHIER LOG AVEC Mise En Forme -------------
     
    NewDocument = Workbooks.OpenText(ThisWorkbook.Path & "\fichier_analyse", xlWindows, 1, xlDelimited, Semicolon:=False, Other:=True, OtherChar:="|", Fieldinfo:=Array(1, 5), Local:=True)
    NewDocument.Sheets(1).Columns(2).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 'suppression des lignes non cohérente (retour à la ligne sans heures)
     
    i = 1 'ligne du fichier log à lire
     
    'i = 2419
    ' ------------- CREATION DU FICHIER TEXTE -------------
    Nomfichiertext = "Analyse " & Replace(Replace(Now, "/", "-"), ":", ".") & ".txt"
    Open ThisWorkbook.Path & "\" & Nomfichiertext For Append As intFic2
     
    ' ------------- CREATION DU FICHIER TEXTE -------------
    'Il vaut mieux éviter de travailler avec activeSheet, ça peut rapidement jouer de mauvais tour
    With NewDocument.Sheets(1)
        Do Until .Cells(i, 3).Value = ""
     
            Code_log = Replace(.Cells(i, 3), " ", "")
     
            If Code_log = "0012" Then
                '_____ prise info départ mission _____
                Code_log = Replace(.Cells(i, 3), " ", "")
                detailmission = .Cells(i, 5)
                rob_deb = Chercherob(detailmission)
                Datedeb = .Cells(i, 1) + .Cells(i, 2)
                Nom_mission = Split(detailmission, "'")(1)
     
     
                '_____ analyse de la ligne en cours ____
                i_navigation = i + 1
                Code_log = Replace(.Cells(i_navigation, 3), " ", "")
                detailmission = .Cells(i_navigation, 5)
                rob_encours = Chercherob(detailmission)
     
                 Do
                    Code_log = Replace(.Cells(i_navigation, 3), " ", "")
                    detailmission = .Cells(i_navigation, 5)
                    rob_encours = Chercherob(detailmission)
                    If rob_deb = rob_encours Then
     
                        Select Case Code_log
     
                                Case "0001", "0002" 'Step1 ou step2
     
                                    DateLog = .Cells(i_navigation, 1) + .Cells(i_navigation, 2)
                                    Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                    If InStr(1, detailmission, "pickElevated", 1) <> 0 Then stepmission1 = Destination Else stepmission3 = Destination
     
                                Case "0003", "0004" 'Step3 ou step4
     
                                    DateLog = .Cells(i_navigation, 1) + .Cells(i_navigation, 2)
                                    Destination = Mid(detailmission, InStr(1, detailmission, "at ", 1) + 3, 10)
                                    If InStr(1, detailmission, "dropElevated", 1) <> 0 Then stepmission4 = Destination Else stepmission2 = Destination
     
                                Case Is = "005" 'Statut de la mission (Done/Cancel)
                                    Statut_mission = "Cancel"
     
                                Case Is = "0010" 'fin
                                    Datefin = .Cells(i_navigation, 1) + .Cells(i_navigation, 2)
                                       ' ligne_log = ligne_log + 1
                                    dureemission = Datefin - Datedeb
                                    num_mission = Split(detailmission, " ")(3)
                                    'rob_fin = "rob" & Right(DetailMission, 3)
                                    Exit Do
     
                                Case Else
     
                                    '   [ Continue Do ]
                                    '   [ Exit Do ]
                        End Select
                    End If
     
                    i_navigation = i_navigation + 1
     
                Loop Until Code_log = "0010" And rob_deb = rob_encours
     
     
     
               'Debug.Print Nom_mission & ";" & rob_deb & ";" & num_mission & ";" & Datedeb & ";" & Datefin & ";" & dureemission & ";" & stepmission1 & ";" & stepmission2 & ";" & stepmission3 & ";" & stepmission4
               Print #intFic2, Nom_mission & ";" & rob_deb & ";" & num_mission & ";" & Datedeb & ";" & Datefin & ";" & dureemission & ";" & stepmission1 & ";" & stepmission2 & ";" & stepmission3 & ";" & stepmission4
     
               'Vider variable
     
     
            End If
            i = i + 1
             '   [ Continue Do ]
             '   [ Exit Do ]
            num_mission = 0
            Datefin = 0
            stepmission1 = 0
            stepmission2 = 0
            stepmission3 = 0
            stepmission4 = 0
        Loop
    End With

    Peux-tu mettre le code de chercherob.
    Peux-tu fournir un ou deux fichiers log (avec quelques ligne mais ou figure un contenu exaustif de tous ce qui peut-être rencontré comme cas de figure.

    Plutôt que d'utiliser un fichier log en sortie, pourquoi ne pas inscrire les information directement dans une page Excel, ça te faciliterait la vie pour la suite pour gérer les multi-fichiers je pense. De plus ça te permettrait de rentrer toutes les information contenu dans ton log de base (comme dans une base de données) puis de faire un tri sur les date, le robot,...
    Le fichier log est utiliser par un autre soft ? Si c'est le cas, rien n'empêche de juste faire une routine qui te génére ton log en fontion des données triées situées dans le fichier xls.

    Pour les multiples fichiers, tu peux faire le listing des fichiers contenus dans un répertoire, voila un exemple.
    Y'a-til une indication pour savoir de quel fichier à quel fichier il faut passer pour poursuivre?


    Tu peux aussi regarder du coté des expressions rationnelles., elles te permettraient sans doute de pouvoir étudier les ligne de ton fichier et en extraire les données qui t'intéresse.


    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. [Plone] ouverture d'un fichier texte (problème très simple)
    Par Beatrix_debutante dans le forum Zope
    Réponses: 6
    Dernier message: 03/10/2006, 18h12
  2. [VB6] Ouverture de plusieurs fichiers textes
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/09/2006, 11h45
  3. Message étrange à l'ouverture d'un fichier texte
    Par Bahan dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 27/07/2006, 12h16
  4. [VBA-E] Macro pour convertir un fichier texte en excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/05/2006, 15h47
  5. [VBA-E] Formatage des données à l'ouverture d'un fichier texte
    Par jmercier dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2005, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo