Tri dans des fichiers
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
- christofausore
- Niveau 1

- Messages : 6
- Enregistré le : sam. 27 févr. 2016 21:55
- Status : Hors ligne
Tri dans des fichiers
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
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
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: tri dans des fichiers
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 ?
ç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 )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- christofausore
- Niveau 1

- Messages : 6
- Enregistré le : sam. 27 févr. 2016 21:55
- Status : Hors ligne
Re: tri dans des fichiers
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 !
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
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Tri dans des fichiers
Ton fichier txt d'exemple est parfait
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
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")
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 )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- christofausore
- Niveau 1

- Messages : 6
- Enregistré le : sam. 27 févr. 2016 21:55
- Status : Hors ligne
Re: Tri dans des fichiers
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
- christofausore
- Niveau 1

- Messages : 6
- Enregistré le : sam. 27 févr. 2016 21:55
- Status : Hors ligne
Re: Tri dans des fichiers
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
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 
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
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
La réponse est... 42
- mikell
- Spammer !

- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Tri dans des fichiers
Ben tu bloques sur tout en fait
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
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 )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- christofausore
- Niveau 1

- Messages : 6
- Enregistré le : sam. 27 févr. 2016 21:55
- Status : Hors ligne
Re: Tri dans des fichiers
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
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
