Impossible de détecter une variable vide en VBA
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:
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:
1 2 3 4 5
| If IsEmpty(text) = True then
end sub
EndIf |
un
Code:
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.