Bonjour à tous,

Tout d'abord, c'est la première fois que je demande de l'aide sur un forum et j'espère vraiment pouvoir trouver de l'aide ici car personne autour de moi n'a pu m'aider.

Je vous sommets donc mon problème, je suis en stage et on m'a assigné comme tâche de réaliser un programme permettant de trier des fichiers logs contenants certaines données, réparties aléatoirement dans ces derniers. (Il est important de savoir que je n'ai commencé à utiliser le VBA qu'il y a 3 jours, j'en suis donc encore aux bases). J'ai donc une quantité non déterminée de fichiers logs, ils peuvent être ajoutés dans le fichier source au fur et à mesure et doivent être traités par le programme dès qu'Excel s'est ouvert.

Le but de mon programme est d'aller chercher les fichier logs un par un, de les analyser, de trouver les données qui m'intéressent, de les remettre en forme, de les extraire et de les trier dans un tableau, contenu dans une nouvelle feuille Excel. J'ai donc commencé par trouver un moyen de récupérer mes données. Les fichiers log se présentent de la façon suivante : un nombre indéterminé de ligne, une seule colonne, une information par ligne. Les informations que je cherches sont les noms et les références des cartes électroniques testées, contenus dans une ligne commençant par "<ETX>" et les dates des tests dans la ligne qui suit cette dernière. Encore une fois ces deux lignes se suivent forcément mais elles sont disposées aléatoirement dans le fichier d'origine à longueur variable.

Voici mon premier essai :

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
Option Compare Text
 
Sub comparaison()
 
Dim text As String
Dim ligne_depart As Long
Dim ligne_arrivee As Long
Dim colonne As Byte
ligne_depart = 1
ligne_arrivee = 2
colonne = 0
 
text = Sheets("Départ").Range("A" & ligne_depart).Value
 
Do While Not IsEmpty(text)
 
text = Sheets("Départ").Range("A" & ligne_depart).Value
 
    If text Like "<ETX>*" Then
    text = Replace(text, "<ETX>H#2", "")
    colonne = 0
 
                Select Case colonne
                    Case 0 'A
                    Sheets("Arrivée").Range("A" & ligne_arrivee).Value = text
 
                    Case 1 'B
                    Sheets("Arrivée").Range("B" & ligne_arrivee).Value = text
 
                    Case 2 'C
                    Sheets("Arrivée").Range("C" & ligne_arrivee).Value = text
 
                    Case Else
 
                End Select
 
    ligne_depart = ligne_depart + 1
    text = Sheets("Départ").Range("A" & ligne_depart).Value
    colonne = colonne + 1
 
                Select Case colonne
                    Case 0 'A
                    Sheets("Arrivée").Range("A" & ligne_arrivee).Value = text
 
                    Case 1 'B
                    Sheets("Arrivée").Range("B" & ligne_arrivee).Value = text
 
                    Case 2 'C
                    Sheets("Arrivée").Range("C" & ligne_arrivee).Value = text
 
                Case Else
                End Select
    ligne_arrivee = ligne_arrivee + 1
 
    Else
    ligne_depart = ligne_depart + 1
 
    End If
 
Loop
 
End Sub
Mon tri se fait, je retrouve mes valeurs, j'arrive à les mettre dans le tableau que je souhaite mais le problème vient de ma boucle. Je n'arrive pas à faire en sorte que mon programme s'arrête lorsqu'il rencontre une case vide dans la feuille contenant le fichier texte (log). J'ai beau essayer avec un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
If IsEmpty(text) = True then 
 
end sub
 
EndIf
un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
While IsNotEmpty(text)
 
MON CODE 
 
Wend
ou encore avec un Do While IsEmpty, Loop, et autres alternatives, rien ne fonctionne, mon programme ne veut pas s'arrêter lorsqu'il rencontre une case contenant la variable texte vide. Il continu de tourner jusqu'à la fin du tableau excel, et ne s'arrête donc jamais.

Je pense qu'il y a un problème avec la variable, il ne doit pas comprendre si elle est vide ou non, mais je ne sais pas comment régler le problème.

Merci par avance de votre aide et du temps que vous prendrez,
Cordialement, TitPaon.