Lire txt et le sauvegarder dans un nouveau txt

Signaler
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012
-
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012
-
OK. je vais essayer de voir ça après. peut être que je changerai ma méthodologie de travail.

Sinon, je cherche à trouver une méthode qui fait la suite:

1) ouvrir un fichier txt
2) chercher mot toto
3) copier toutes les lignes après "toto" dans un nouveau fichier txt.
4) dès qu'il trouve le mot "titi", arrêter de copier et fermer les fichiers txt.


exemple de fichier texte :

blablablabla
......
toto:

lignes à copier dans nouveau texte
......

titi:

blablablabla.

......

fin texte



est-ce possible de faire un programme VBA qui fait ça?

14 réponses


est-ce possible de faire un programme VBA qui fait ça?

oui.
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

OUI, mais comment?!!!!
aurais tu un exemple?

Et je pense bien que tu devrais regarder dans l'aide de vba:

et là.
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

OK.

tu as bien lu les étapes que le programme doit faire?!!!

fin, pour moi ( en tant que débutant) ce n'est pas facile!! et c pour ça que je demande de l'aide!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
Ton aide VBA sur les mots :
Open
For input
Line Input (tu y trouveras même un exemple !)

Ta demande est par ailleurs assez peu précise en ce qui concerne les mots toto et titi (pas précisé si seuls sur la ligne, ou devant, ou n'importe où sur la ligne).
A tout hasard, donc : lire au besoin ton aide VBA : Instr
Reviens avec ton essai de code si encore difficulté (en principe non, si tu t'appliques ...)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
fin, pour moi ( en tant que débutant) ce n'est pas facile!! et c pour ça que je demande de l'aide!

Ton aide VBA devrait suffire !
Je ne me rappelle aucune difficulté à mes tous débuts avec ça et pour ce que tu veux faire !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

merci "ucfoutu".

Concernant mes mots toto et titi, oui ils sont seuls dans la ligne.je suis en train d'essayer de faire le programme, mais la difficulté est comment copier ce qu'il y a après le mot toto ( c à dire entre toto et titi) et s’arrêter lorsqu’on arrive au mot titi?

Bon, je vais essayer de regarder ça et puis on verra.

Merci.

tu as bien lu les étapes que le programme doit faire?!!!

Oui, même que c'est l'enfance de l'art.

Il y a une flopée de sites avec dees exemples de programmes.

Commence par aller voir sur le site de Frédéric Sigonneau ou sur excelabo.net
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
mais la difficulté est comment copier ce qu'il y a après le mot toto ( c à dire entre toto et titi) et s’arrêter lorsqu’on arrive au mot titi?


Pour cela, le procédé est quasiment le même :
Ouvrir/créer un second fichier avec Open ... For Output
Y écrire avec [u]Print #, instruction
/u
puis détruire le 1er fichier.
Si le second doit avoir le même nom que le premier : Instruction Name, instruction
Ton aide VBA sur ces mots, là encore.
J'aimerais quand même te voir au moins commencer à coder sur ces bases ! (car très simple).




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

Je donne un exemple de code qui n'a pas marché:


Sub Search_and_Copy()

Dim inputFileName As String, outputFileName As String
Dim startText As String, endText As String
Dim FSO As Object
Dim textFile As Object
Dim data As String
Dim p1 As Long, p2 As Long

inputFileName = "C:\5_4_2012\123.txt" 'INPUT FILE - CHANGE AS REQUIRED
outputFileName = "C:\5_4_2012\text2.txt" 'OUTPUT FILE - CHANGE AS REQUIRED

startText = "FLIGHT"
endText = "End"

Set FSO = CreateObject("Scripting.FileSystemObject" )

Set textFile = FSO.OpenTextFile(inputFileName)
data = textFile.ReadAll
textFile.Close

p1 = InStr(data, startText)
If p1 > 0 Then
p1 = InStr(p1, data, vbCrLf)
If p1 > 0 Then
p1 = p1 + 2
p2 = InStr(p1, data, endText)
If p2 > 0 Then
p2 = InStrRev(data, vbCrLf, p2)
Set textFile = FSO.CreateTextFile(outputFileName)
textFile.Write Mid(data, p1, p2 - p1)
textFile.Close
End If
End If
End If
End Sub





Je ne sais pas prquoi ça n'a pas fonctionné, bien qu'il ne me donne ni message d'erreur, ni un arret de la procédure!!!!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Je ne t'ai pas demandé d'utiliser FSO !
J'ai d'ailleurs personnellement inhibé tout ce qui est VBS de ma machine (raisons de sécurité) !
VBA t'offre ce qui est nécessaire et je t'en ai parlé.
Qu'en as-tu donc fait ? As-tu ouivert ton aide VBA sur les mots que je t'ai signalés ? Apparemment pas !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

Si, mais le problème est que l fichier txt que j'ai, c un gros fichier. et donc si je vais le lire ligne par ligne ça va prendre bcp de temps!!!!
Donc, j'ai cherché sur internet et trouvé FSO. donc j'ai essayé avec FSO. Mais bon, apparemment c un peu plus compliqué que ça.

Bref, c pas grave. Sinon, ya aussi la méthode ADODB qui est aussi rapide et pas mal à utiliser!

Euh, je sais pas! je ne suis pas fait pour la programmation.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Si, mais le problème est que l fichier txt que j'ai, c un gros fichier. et donc si je vais le lire ligne par ligne ça va prendre bcp de temps!!!!

Que tu affirmes ! car :
- non seulement ce n'est pas vrai
mais encore
- la méthode Open te permet également de lire tout d'un coup, si tu le souhaites !
- si ton fichier est si gros, il n'est justement pas recommandé de le lire d'un seul coup, mais, précisément, ligne par ligne
- et enfin : dans le cas d'une lecture "d'un seul coup", il te faudra en plus passer par split
Alors ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
10
Date d'inscription
jeudi 5 avril 2012
Statut
Membre
Dernière intervention
4 juin 2012

OK, Je vais voir ça.

à essayer.