lire txt et le sauvegarder dans un nouveau txt

lire txt et le sauvegarder dans un nouveau txt - VB/VBA/VBS - Programmation

Marsh Posté le 05-04-2012 à 17:06:28    

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?     :sarcastic:  

Reply

Marsh Posté le 05-04-2012 à 17:06:28   

Reply

Marsh Posté le 06-04-2012 à 04:13:25    

Reply

Marsh Posté le 06-04-2012 à 09:51:54    


 
 
Merci, mais les procédures d'ouverture et fermeture, et même créer un fichier txt, ça je le sais, et j'ai plein d'exemples sur internet. Mais comment pouvoir dire à VBA de chercher le mot "toto" et le mot "titi" et copier ce qui se trouve entre les deux mots dans txt?

Reply

Marsh Posté le 06-04-2012 à 09:54:15    


 
 
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 me donne ni message d'erreur, ni un arret de la procédure!!!!    :??:

Reply

Marsh Posté le 06-04-2012 à 10:33:53    

J'ai pas compris ce que tu voulais faire avec les vbCrLf ?
 
Sinon, comme ça ça devrait marcher si bien sûr les textes de début et de fin sont présents :

Code :
  1. Sub Search_and_Copy()
  2.    
  3.     Dim inputFileName As String, outputFileName As String
  4.     Dim startText As String, endText As String
  5.     Dim FSO As Object
  6.     Dim textFile As Object
  7.     Dim data As String
  8.     Dim p1 As Long, p2 As Long
  9.    
  10.     inputFileName ="C:\5_4_2012\123.txt"     'INPUT FILE - CHANGE AS REQUIRED
  11.     outputFileName = "C:\5_4_2012\text2.txt"   'OUTPUT FILE - CHANGE AS REQUIRED
  12.    
  13.     startText = "FLIGHT"
  14.     endText = "End"
  15.    
  16.     Set FSO = CreateObject("Scripting.FileSystemObject" )
  17.    
  18.     Set textFile = FSO.OpenTextFile(inputFileName)
  19.     data = textFile.ReadAll
  20.     textFile.Close
  21.    
  22.     p1 = InStr(data, startText) + Len(startText) + 1
  23.     p2 = InStr(data, endText)
  24.     If p1 > 0 And p2 > 0 And p2 > p1 Then
  25.         Set textFile = FSO.CreateTextFile(outputFileName)
  26.         textFile.Write Mid(data, p1, p2 - p1)
  27.         textFile.Close
  28.     End If
  29. End Sub


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 06-04-2012 à 11:18:42    

vave a écrit :

J'ai pas compris ce que tu voulais faire avec les vbCrLf ?
 
Sinon, comme ça ça devrait marcher si bien sûr les textes de début et de fin sont présents :

Code :
  1. Sub Search_and_Copy()
  2.    
  3.     Dim inputFileName As String, outputFileName As String
  4.     Dim startText As String, endText As String
  5.     Dim FSO As Object
  6.     Dim textFile As Object
  7.     Dim data As String
  8.     Dim p1 As Long, p2 As Long
  9.    
  10.     inputFileName ="C:\5_4_2012\123.txt"     'INPUT FILE - CHANGE AS REQUIRED
  11.     outputFileName = "C:\5_4_2012\text2.txt"   'OUTPUT FILE - CHANGE AS REQUIRED
  12.    
  13.     startText = "FLIGHT"
  14.     endText = "End"
  15.    
  16.     Set FSO = CreateObject("Scripting.FileSystemObject" )
  17.    
  18.     Set textFile = FSO.OpenTextFile(inputFileName)
  19.     data = textFile.ReadAll
  20.     textFile.Close
  21.    
  22.     p1 = InStr(data, startText) + Len(startText) + 1
  23.     p2 = InStr(data, endText)
  24.     If p1 > 0 And p2 > 0 And p2 > p1 Then
  25.         Set textFile = FSO.CreateTextFile(outputFileName)
  26.         textFile.Write Mid(data, p1, p2 - p1)
  27.         textFile.Close
  28.     End If
  29. End Sub



 
 
 
Merci bcp.
ça fonctionne parfaitement.    :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed