Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010
-
20 juin 2008 à 11:09
Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010
-
30 juin 2008 à 10:57
Salut les Kracks,
Je souhaiterai éviter une tâche répétitive avec un fichier .txt
En effet, tout les jours j'ouvre pls fichier au même endroit > F:\Transit\MVT.txt, le renomme en F:\Transit\MVT043+200.t00, supprime les lignes de contenu différent de 043 ou 200(voir emplacement ci-dessous).
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK ' à supprimer, toute la ligne
Evidement, la présentation est toujours la même, et les fichiers comporte en moyenne 200 ko.
Y aurait-t-il un moyen par VBA, pour lancer une macro qui me fasse le travail.
Tant que je vous tiens, le language pour travailler sur du .txt utilise quoi comme programme habituellement?
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 20 juin 2008 à 17:44
re,
essaie ceci, mais pas testé car je suis au taf :
(j'ai rajouté un tableau de données et un Split sur les vbTab)
Sub test()
Dim ff As Integer: ff = FreeFile
Dim ff2 As Integer
Dim str As String
Dim sNameFile As String: sNameFile = "F:\Transit\MVT.txt"
Dim SRenameFile As String: SRenameFile = "F:\Transit\MVT043+200.txt"
Dim aArr() as string '*** Modif ICI ***
Open sNameFile For Input As #ff
ff2 = FreeFile
Open SRenameFile For Output As #ff2
Do While Not EOF(ff)
Line Input #ff, str
aArr = Split(str, vbTab) '*** Modif ICI ***
If aArr(1) "043" Or aArr(1) "200" Then '*** Modif ICI ***
Print #ff2, str
End If
erase aArr '*** Modif ICI ***
Loop
Close #ff2
Close #ff
End Sub
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 20 juin 2008 à 18:47
no soucy ;)
je te rassure (ou pas) je suis aussi débutants, il y a trop de chose pour tout connaitre..
Un conseil si ça te plait, un bon bouquin, t'apprends plus vite et il te sert toujours, en cas de trou de mémoire.
Mais il n'y a pas de secrêts, la manipulation de code reste le meilleurs moyen de rester 'a niveau et d'apprendre' d'autres choses
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 20 juin 2008 à 11:32
re,
à adapter au besoin, mais le principal y est, je n'ai pas mis le code de suppression du premier fichier, pour que tu puisses vérifier :
Sub test()
Dim ff As Integer: ff = FreeFile
Dim ff2 As Integer
Dim str As String
Dim sNameFile As String: sNameFile = "F:\Transit\MVT.txt"
Dim SRenameFile As String: SRenameFile = "F:\Transit\MVT043+200.txt"
Open sNameFile For Input As #ff
ff2 = FreeFile
Open SRenameFile For Output As #ff2
Do While Not EOF(ff)
Line Input #ff, str
If InStr(1, str, " 043
") Or InStr(1, str, " 200
") Then
Print #ff2, str
End If
Loop
Close #ff2
Close #ff
End Sub
~
<small>Mortalino ~ [code.aspx?ID=39466 Colorisation
automatique]</small>
Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010 20 juin 2008 à 11:51
Re,
Effectivement, la copie du fichier se fait sans problème, cependant le fichier final est vide?
Tu as bien fait de ne pas avoir mis le code de suppression du premier fichier car il doit rester tel quel!
Si ton code rencontre 043 ailleurs que l'endroit souhaité (en rouge), va t-il laisser la ligne ou la supprimer ?
ex: 0102043 201 000 756 209 20080624 VCT/AA EQUITIES UK
En effet, cette ligne devrait être supprimée car 201 # de 043 & 200.
Comme tu peux le constater, le "filtre" devra toujours se faire à partir du neuvième emplacement en partant de la gauche de la ligne (je ne sais pas si tu vas comprendre car je n'ai pas les termes techniques adéquat), en comptant à partir de k0102043 201.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 20 juin 2008 à 12:03
Si ton code rencontre 043 ailleurs que l'endroit souhaité (en rouge), va t-il laisser la ligne ou la supprimer ?
>> j'ai bien eu conscience de cette possibilité, d'où le fait d'avoir rajouté dans le InStr(..) un espace avant et après les 042 et 200.
Bizarre que ton fichier texte soit vide, bien entendu j'avais fait des tests, concluant chez moi.
Je suis parti de là :
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 201 000 756 209 20080624 VCT/AA EQUITIES UK
et suis arrivé ici :
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
0102663 043 000 756 209 20080624 VCT/AA EQUITIES UK
0102664 200 000 756 209 20080624 VCT/AA EQUITIES UK
<hr size="2" width="100%" />rajoute le code en orange, une fois fini, fais [Ctrl + G] pour avoir la fenêtre execution, copie ce qu'il y a dedans et colle le ici, que je vois si c'est des espaces ou des tabulations
Sub test()
Dim ff As Integer: ff = FreeFile
Dim ff2 As Integer
Dim str As String
Dim sNameFile As String: sNameFile = "F:\Transit\MVT.txt"
Dim SRenameFile As String: SRenameFile = "F:\Transit\MVT043+200.txt"
Open sNameFile For Input As #ff
ff2 = FreeFile
Open SRenameFile For Output As #ff2
Do While Not EOF(ff)
Line Input #ff, str
Dim b As Boolean, i as integer
If Not b then
for i = 1 to Len$(str)
Debug.Print "~" & Mid$(str, i, 1) & "~"
next i
b = True
end if
If InStr(1, str, " 043 ") Or InStr(1, str, " 200 ") Then
Print #ff2, str
End If
Loop
Close #ff2
Close #ff
End Sub
Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010 20 juin 2008 à 14:32
Désolé, parti manger et le boulot, c'est le boulot...
Merci Mortalino de t'acharner sur mon dossier,
Effectivement tjs configuré comme suit (colonne 9)...
Je ne pense pas que celà joue, mais je tiens à t'informer qu'il y a du texte aprés VCT/AA EQUITIES UK, mais comme la ligne est longue et que c'est du confidentiel, j'ai préféré raccourcir!
Pour ce qui est de ta demande, j'espère que celà t'aidera (CTRL G) :
Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010 20 juin 2008 à 18:39
Mortalino, t'es mortel mais soit immortel pour la continuité de se site....
Ta formule est nickel...
J'avoue qu'en lisant sur le site tous ce qui te concerne, je reste admiratif, et étant novice dans le milieu, celà me laisse constater la route qu'il me reste à faire.
Je fais du reporting en banque et m'aperçeoit de l'implication nécessaire de ses procédés. De plus, la logique, notamment en VBA m'est apréciable, mais comme il me manque bien du "vocabulaire VBA", se site et un puit.
J'essaie de prendre le peu de brique pour faire mon mur, mais comme je le veux toujours de plus en plus haut, il arrive un moment ou on doit en attrapper d'autres.
Concernant ta macro sur le .txt, je t'avoue être complétement à l'Ouest, bien que je sois à l'Est de la France.
Bonne continuation et à la semaine prochaine pour de nouvelles aventures...
Bon W-E
Djrome
Messages postés57Date d'inscriptionvendredi 13 juin 2008StatutMembreDernière intervention26 mai 2010 26 juin 2008 à 11:07
Salut Mortalino,
Ne comprenant pas ta macro (on fait se que l'on peut avec ce que l'on a, et je pus peux!), j'ai essayé d'appliquer à un autre fichier composé des éléments comme suit :