Voila le p'tit programme.
Alors il est fait en Excel (vba) et pourra être repris en VB ce soir ou mercredi pour t'en faire un fichier exe propre
Le fichier d'entrée sera remplacé par le fichier de sortie.
dans l'exemple le fichier d'entrée doit s'appeler data.txt et le fichier de sortie s’appelle sortie.txt
Je te mp ton fichier sortie.txt car je sais pas s'il y a confidentialité du prog
Pour la variable R, je limite à 3 chiffres après la virgule et je recherche jusque 3 lignes avant pour els données XZIK
John.
Sub traitement()
'définition du chemin des des fichiers entrée et sortie
chemin_p = ActiveWorkbook.Path & "\"
Open chemin_p & "data.txt" For Input As #1
Open chemin_p & "sortie.txt" For Output As #2
'définition des variables
Dim ligne_message
Dim ligne_avant
'lecture du fichier
Line Input #1, ligne_message
'Tant que la fin du fichier n'ets pas atteinte, je boucle
Do While EOF(1) = False
'Je met a 0 la ligne actuelle
donnee_p = 0
'Si G2 ou G3 sont présents
If ligne_message Like "G2 *" Or ligne_message Like "G3 *" Then
'mise a 0 des variables
data_x = ""
data_z = ""
data_i = ""
data_k = ""
'analyse de la ligne
'recherche de la ligne_actuelle ou précédente
retour_ligne:
If donnee_p = 0 Then tableau = Split(ligne_message, " ")
If donnee_p = 1 Then tableau = Split(ligne_prem, " ")
If donnee_p = 2 Then tableau = Split(ligne_deux, " ")
If donnee_p = 3 Then tableau = Split(ligne_trois, " ")
'mise en mémoire 2D de la ligne
'Eclatement de la ligne avec séparateur l'espace
For i = 0 To UBound(tableau)
If tableau(i) Like "X*" Then If data_x = "" Then data_x = Replace(Replace(tableau(i), "X", ""), ".", ",")
If tableau(i) Like "Z*" Then If data_z = "" Then data_z = Replace(Replace(tableau(i), "Z", ""), ".", ",")
If tableau(i) Like "I*" Then If data_i = "" Then data_i = Replace(Replace(tableau(i), "I", ""), ".", ",")
If tableau(i) Like "K*" Then If data_k = "" Then data_k = Replace(Replace(tableau(i), "K", ""), ".", ",")
Next i
'Je vérifie que toutes les variables X Z I K sont présentes
If data_x <> Empty And data_z <> Empty And data_i <> Empty And data_k <> Empty Then
'Toutes les données sont présentes, je calcule R avec la formule de David
'R = Sqrt((I-X)^2 + (K-Z)^2)
'J'applique la formule
rayon_p = Replace(Round(Math.Sqr(((data_i - data_x) ^ 2) + ((data_k - data_z) ^ 2)), 3), ",", ".")
'Ecriture du R abec la ligne
If rayon_p Like "*.*" Then Else rayon_p = rayon_p & ".0"
Print #2, ligne_message & " R" & rayon_p
'Je vide la variable
rayon_p = ""
Else
'Il manque une variable, je la recherche dans la ligne précédente
If donnee_p = 2 Then donnee_p = 3
If donnee_p = 1 Then donnee_p = 2
If donnee_p = 0 Then donnee_p = 1
GoTo retour_ligne
End If
Else
'Sinon, j'écris tel quel dans le fichier de sortie
Print #2, ligne_message
End If
'mise en mémoire de la ligne d'avant avant de lire la prochaine
ligne_trois = ligne_deux
ligne_deux = ligne_prem
ligne_prem = ligne_message
Line Input #1, ligne_message
Loop
Close #1
Close #2
End Sub