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 :
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
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
un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If IsEmpty(text) = True then end sub EndIf
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 While IsNotEmpty(text) MON CODE Wend
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.
Partager