Tri dans des fichiers

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
christofausore
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 27 févr. 2016 21:55
Status : Hors ligne

Tri dans des fichiers

#1

Message par christofausore »

Bonjour a tous, voila j'aimerais votre avis sur un projet de programme pour mon travail;

Alors je suis debutant dans la programmation et je cherche des conseils pour une idee afin de faciliter la vie de mes collaborateurs au taf !

voila mon soucis dans un dossier il y a plusieurs fichiers (500 environ) texte d'une 20 de Ko chacun avec des references a l'interieur, ils sont ecrit de tel facon :

B;A320
P;A320;805d805d;1019,0;90;90;01496175;D;texte 2152/45
U;texte__S;100
E;01496175;02 F1;texte 2152/45 1518128001 1019,0 A320;805d805d

Voila en gros a quoi ca correspond pour 1 reference, bien sur ce n'est jamais la même chose il peut y a voir plusieurs ligne U par exemple, mais il n'y a qu'une seule ligne B,P et E a chaque référence. Dans 1 fichier il peut y avoir 80 référence environ. j'espere etre assez clair concernant l'architecture des fichiers.

Voila j'aimerais un programme qui me permet des que j'ouvre un fichier de classer les références la dans mon cas j'aimerais que les références soit classer en fonction de la ligne E et de pouvoir choisir d'afficher par exemple que les references avec 02 F1 dans la ligne E.

C'est a dire j'aimerais que le programme m'affiche toute les reference 02 F1 dans un tableau ou dans un fichier texte plus facilement lisible sans les lignes U par exemple.

est ce que cela serais possible ou est-ce trop compliquer ? si oui j'aurais surement besoin de votre aide si c'est non...ben quelqu'un a une idee de comment je pourrais faire ?

merci d'avance pour vos reponses
La réponse est... 42
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: tri dans des fichiers

#2

Message par mikell »

C'est possible et pas très compliqué
ça serait bien de poster en pièce jointe un des fichiers txt à 80 références et d'être plus précis sur ce qui doit exactement s'afficher en sortie, par exemple est-ce que juste l'affichage des lignes E triées suffirait ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
christofausore
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 27 févr. 2016 21:55
Status : Hors ligne

Re: tri dans des fichiers

#3

Message par christofausore »

Ok je mets un fichier en pièce jointes il ne contient pas 80 référence mais il y en a une 15 environ, j'ai modifier les données sensibles dans le fichier pour qu'il n'y ai rien de confidentiel. je ne pense pas que je pourrais avoir un fichier de 80 référence celui que je te fourni je l'ai écrit moi même pour les besoins de mes tests, ces fichiers comportent des données assez précieuses pour l'entreprise et je ne pourrait pas en avoir 1 a dispo comme ça pour le balancer sur le net, desoler !

Donc comme tu verras dans le fichier la dernière ligne de chaque référence se trouve écrite de cette façon :

E;01496356;15 Z ;CCLINS ADHTV*5d1 INIT009 1348,0 PR-0000;9016g7016h

En gros j'ai besoin que le collègue choisisses le numéro dont il a besoin (j'ai souligner ici dans l'exemple ce que je pense être la meilleur variable pour le tri) et que le script lui sorte toute les ligne E qui comporte ce numero !
Fichiers joints
B1518128.txt
(2.73 Kio) Téléchargé 79 fois
La réponse est... 42
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Tri dans des fichiers

#4

Message par mikell »

Ton fichier txt d'exemple est parfait

Code : Tout sélectionner

#Include <Array.au3>
$txt = FileRead(@scriptdir & "\B1518128.txt")

$res = StringRegExp($txt, '(?m)^E\N+', 3)
_ArrayDisplay($res, "toutes les lignes E du fichier")

$var = "02 Z"
$res = StringRegExp($txt, '(?m)^E.+;' & $var & ';\N+', 3)
_ArrayDisplay($res, "toutes les lignes E avec ""02 Z"" du fichier")
Dans ce genre de script, le plus long est de faire l'interface et sa gestion avec affichage, commandes etc en fonction du look et du fonctionnement désirés
Il y a différentes possibilités : on cherche dans les fichiers un par un ou dans tous les 500 d'un coup, on veut pouvoir trier en utilisant des variables différentes, on veut un affichage plus ou moins détaillé, etc
D'où l'importance de bien définir tout ça avec précision avant de commencer la rédaction du script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
christofausore
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 27 févr. 2016 21:55
Status : Hors ligne

Re: Tri dans des fichiers

#5

Message par christofausore »

Dans ce genre de script, le plus long est de faire l'interface et sa gestion avec affichage, commandes etc en fonction du look et du fonctionnement désirés
Il y a différentes possibilités : on cherche dans les fichiers un par un ou dans tous les 500 d'un coup, on veut pouvoir trier en utilisant des variables différentes, on veut un affichage plus ou moins détaillé, etc
D'où l'importance de bien définir tout ça avec précision avant de commencer la rédaction du script

je te remercie beaucoup

Je butais comme un malade sur la fonction de tri, pour l'interface j'arrive a m'en sortir pour l'instant mais oui en effet elle est vraiment tres importante :)

bon ben il maintenant plus qu'a mettre tout ca en place avec les autres fonctions du script :)
La réponse est... 42
Avatar du membre
christofausore
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 27 févr. 2016 21:55
Status : Hors ligne

Re: Tri dans des fichiers

#6

Message par christofausore »

Voila bon j'ai voulu essayer des chose un peu cette semaine, c'est pour ca que je n'ai pas relancer des nouvelles

j'ai donc fait un test dans ma boite avec une version interfacer tres minimaliste du script (juste 2 bouton, 1 pour charger les lots, l'autres pour sortir du soft) tout en bricolant de mon cote pour une version plus aboutie et plus clair mais je butte sur deux trois chose je vous mets le script, quelque conseils ne serait pas de refus svp parce que je bloque pas mal en fait :oops:

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>

Global $Form1 = GUICreate("Alpha V1.0", 622, 661, 192, 124)
;~ Global $ListView1 = GUICtrlCreateListView("", 56, 64, 513, 569)
Global $Button1 = GUICtrlCreateButton("Charger", 96, 16, 177, 25)
Global $Button2 = GUICtrlCreateButton("Exit", 349, 16, 177, 25)
GUISetState(@SW_SHOW)

While 1

$nMsg = GUIGetMsg()
  Select
   Case $nMsg=$Button1
         $txt= fileOpenDialog("Ajouter des fichiers","c:\lots","Tous types (*.*)",1+4)
		if @error Then
            MsgBox(4096,"","Pas de fichier(s) sélectionné(s)")
		Else
				$txt1 = FileRead ($txt)
				$res = StringRegExp($txt1, '(?m)^E\N+', 3)
;~ 				$item1 = GUICtrlCreateListViewItem ( $res ,$ListView1)
				_ArrayDisplay($res, "toutes les lignes du fichier")
;~ 				$var = $nombre
				$Nombre = Inputbox ("" , "") 
;~ 				$res = StringRegExp($txt1, '(?m)^E.+;' & $Input2 & ';\N+', 3)
;~ 				_ArrayDisplay($res, "toutes les lignes du fichier avec '$nombre'")
		EndIf
	  Case $nMsg=$Button2
		  Exit
 EndSelect
WEnd
J'ai voulu afficher le resultats du tri dans une listview mais la ca affiche rien et concernant la variable je voulait la faire renseigner une fois le fichier charger dans une input box mais je ne sais pas si c'est possible en fait :?:
La réponse est... 42
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Tri dans des fichiers

#7

Message par mikell »

Ben tu bloques sur tout en fait :shock:
Le script là-dessous, c'est pour montrer le principe de fonctionnement basique, il marche avec le fichier txt de ton post #3
Pour en améliorer les fonctionnalités ya du boulot, je te suggère de prendre ton temps pour bien assimiler comment tout le bazar fonctionne, et apprendre les bases en utilisant le fichier d'aide et en étudiant bien les exemples
Tu devrais aussi apprendre à faire et à utiliser des fonctions

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>

Global $Form1 = GUICreate("Alpha V1.0", 520, 360)
Global $ListView1 = GUICtrlCreateListView("Lignes", 10, 50, 500, 300)
GUICtrlSendMsg($ListView1, $LVM_SETCOLUMNWIDTH, 0, 480)
Global $Button1 = GUICtrlCreateButton("Charger", 20, 15, 80, 20)
Global $Button2 = GUICtrlCreateButton("Vider la liste", 130, 15, 90, 20)
GuiCtrlCreateLabel("variable :", 300, 17, 60, 20)
Global $Input1 = GUICtrlCreateInput("", 350, 15, 40, 20)
Global $Button3 = GUICtrlCreateButton("Trier", 410, 15, 70, 20)
GUISetState(@SW_SHOW)

Global $file, $txt

While 1

$nMsg = GUIGetMsg()
  Select
   Case $nMsg=$GUI_EVENT_CLOSE
         Exit

   Case $nMsg=$Button1
          $file = "B1518128.txt"
            $txt = FileRead ($file)
            $res = StringRegExp($txt, '(?m)^E\N+', 3)
            GuiCtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0)
            For $i = 0 to UBound($res)-1
                 GUICtrlCreateListViewItem ($res[$i], $ListView1)
            Next

   Case $nMsg=$Button2
         GuiCtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0)
  
   Case $nMsg=$Button3
          $Nombre = GuiCtrlRead($Input1)
          If $Nombre <> "" Then
               $res = StringRegExp($txt, '(?m)^E.+;' & $Nombre & ';\N+', 3)
               If not @error Then
                  GuiCtrlSendMsg($ListView1, $LVM_DELETEALLITEMS, 0, 0)
                  For $i = 0 to UBound($res)-1
                        GUICtrlCreateListViewItem ($res[$i], $ListView1)
                  Next
              EndIf
          EndIf
 EndSelect
WEnd
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
christofausore
Niveau 1
Niveau 1
Messages : 6
Enregistré le : sam. 27 févr. 2016 21:55
Status : Hors ligne

Re: Tri dans des fichiers

#8

Message par christofausore »

merci de tes conseils mikell, je vais faire comme tu a dit je vais étudier tout ca et reprendre tout a tête reposé ce weekend si j'ai un peu de temps devant moi !

bon c'est la premiere fois que je code quelque chose je me doutais bien que c'etait vraiment pas fameux en fait :)
La réponse est... 42
Répondre