[Résolu ] - VBS - Comment concaténer

- VBS - Comment concaténer [Résolu ] - VB/VBA/VBS - Programmation

Marsh Posté le 17-03-2005 à 18:26:31    

Hello,
 
Je suis vraiment un débutant dans le monde du VBS.
Le Batch ne me permets plus de répondre à mes besoins :/
 
Voulà ma question; j'ai deux fichiers 01.txt et 02.txt
Dans chaque fichier, j'ai qu'une ligne de caractères:
01.txt :   SET CAISSE=
02.txt :   02
 
J'aimerai simplement concaténer ces deux lignes pour qu'elles fassent :
SET CAISSE=02
 
Est ce que vous auriez une idée ?
Merci


Message édité par Tibet-Libre le 21-03-2005 à 10:28:46

---------------
GaazzzzZZZZZZZZ
Reply

Marsh Posté le 17-03-2005 à 18:26:31   

Reply

Marsh Posté le 18-03-2005 à 09:40:45    

sub ppale()
    dim chaine1 as string, chaine2 as string,result as string
    chaine1=litFichierText("C:\...\01.txt" )
    chaine2=litFichierText("C:\...\02.txt" )
    result=chaine1+chaine2
end sub
 
function litFichierText(chemin as string) as string
   dim result as string
   result=""
   Open chemin+"01.txt" For Input As #1
        Do While EOF(1) = False
           Line Input #1, Ligne
           result=result+ligne
        Loop
   Close
   litFichierText=result
End Function
 
 
Il faut lancer la procédure ppale() et le résultat se trouve dans result. Cette méthode marche aussi pour concaténer 2 fichiers texte qui ne font pas forcément 1 ligne.

Reply

Marsh Posté le 18-03-2005 à 10:25:32    

Merci mais hélas çà ne marche pas.
Erreur ligne 2 , caractère 17.
 
J'ai bien renseigné result="c:\03.txt"
Tu aurais une idée ?


---------------
GaazzzzZZZZZZZZ
Reply

Marsh Posté le 18-03-2005 à 11:16:33    

Essaye comme ça:
 
sub ppale()  
    dim chaine1 as string, chaine2 as string,result as string  
    chaine1=litFichierText("C:\01.txt" )  
    chaine2=litFichierText("C:\02.txt" )  
    Cells(1,1)=chaine1+chaine2  
end sub  
 
function litFichierText(chemin as string) as string  
   dim result as string  
   result=""  
   Open chemin For Input As #1  
        Do While EOF(1) = False  
           Line Input #1, Ligne  
           result=result+ligne  
        Loop  
   Close  
   litFichierText=result  
End Function  
 
Il ne faut pas que tu mette result="C:\03.txt". Le résultat va être enregistré dans la chaine de caractère result. Si tu veux l'enregistrer dans un fichier texte, il faut écrire encore une macro.
De plus, j'ai fait une erreur à la ligne du Open (il faut enlever le +"01.txt" et le spécifier lors de l'appel de la fonction
Avec ce programme tu devrais voir apparaitre dans la cellule (1,1) de ta feuille active la concaténation de tes deux fichiers. Veux tu écrire ce résultat dans un 3ème fichier texte ?

Reply

Marsh Posté le 18-03-2005 à 11:31:46    

je ne trouve aucune aide sur ta fonction  
sub ppale() ? Qu'est ce que c'est concretement ?


---------------
GaazzzzZZZZZZZZ
Reply

Marsh Posté le 18-03-2005 à 11:46:47    

C'est normale que tu ne trouve aucune aide dessus car ce n'est pas une fonction de base de visual basic. C'est une fonction personnalisée.On peut auusi l'appeler genFichierTexte. A part ça, je viens de m'apercevoir que tu ne travaille pas sous vba mais sous vb. Pour exécuter genFichierTexte, tu dois l'appeler depuis une autre méthode (la méthode main par exemple)
 
 
sub genFichierTexte()  
    dim chaine1 as string, chaine2 as string,result as string  
    chaine1=litFichierText("C:\01.txt" )  
    chaine2=litFichierText("C:\02.txt" )  
    ecritFichier("C:\03.txt",chaine1+chaine2)  
end sub  
   
function litFichierText(chemin as string) as string  
   dim result as string  
   result=""  
   Open chemin For Input As #1  
        Do While EOF(1) = False  
           Line Input #1, Ligne  
           result=result+ligne  
        Loop  
   Close  
   litFichierText=result  
End Function  
 
Public sub ecritFichier(nomFichier As String, contenu As String)
    Open nomFichier For Output As #1
        Print #1, contenu
    Close
End sub

Reply

Marsh Posté le 18-03-2005 à 12:44:21    

Le VBS ne supporte pas les Dim .... As ....
Il faut mettre Dim .... et ca passe.

Reply

Marsh Posté le 18-03-2005 à 13:54:15    

Bcp d'erreur dans le VBS.
Là je l'ai modifié de la sorte mais je bloque sur ligne 10 carctère 16.
 
Et je ne comprend pas la ligne avec LINE qui n'est déclaré nul part ?
 
 
Public sub main()  
dim chaine1 , chaine2 ,result : string  
    chaine1=litFichierText("C:\01.txt" )  
    chaine2=litFichierText("C:\02.txt" )  
    ecritFichier "C:\03.txt",chaine1 & chaine2
end sub  
 
   function litFichierText(chemin)
   dim result :string  
   result=""  
   Open chemin For Input as #1  
        Do While EOF(1) = False  
           Line Input #1, Ligne  
           result=result&ligne  
        Loop  
   Close  
   litFichierText=result  
End Function  
 
Public sub ecritFichier(nomFichier String, contenu String)
    Open nomFichier For Output As #1
        Print #1, contenu
    Close
End sub


---------------
GaazzzzZZZZZZZZ
Reply

Marsh Posté le 18-03-2005 à 17:20:59    

Line input #1, lire par ligne le fichier ouvert 1.

Reply

Marsh Posté le 18-03-2005 à 20:23:10    

Citation :

dim chaine1 , chaine2 ,result : string


Citation :

dim result :string


 
Je pense qu'il faut enlever les ": string"

Reply

Marsh Posté le 18-03-2005 à 20:23:10   

Reply

Marsh Posté le 18-03-2005 à 21:47:42    

possible mais je doute (je viens de relire), il ne comprend pas  'Input'.
Esaie cela
 

Code :
  1. Set Fso = CreateObject("Scripting.FileSystemObject" )
  2. Set Ftxt1 = Fso.OpenTextFile("C:\01.txt", 1)
  3. Set Ftxt2 = Fso.OpenTextFile("C:\02.txt", 1)
  4. Txt1 = Ftxt1.ReadAll
  5. Txt2 = Ftxt2.ReadAll


 
A essayer.


Message édité par knakes le 18-03-2005 à 21:48:04
Reply

Marsh Posté le 21-03-2005 à 10:27:55    

Knakes !!!!!!!!
1000 merci !!!!
Tu m'as donné une piste, finalement j'ai réussi :
Même sur VBFRANCE, il n'ont pas réussi à m'aider.
 
 
 
Set Fso = CreateObject("Scripting.FileSystemObject" )
Set Ftxt1 = Fso.OpenTextFile("C:\01.txt", 1)
Set Ftxt2 = Fso.OpenTextFile("C:\02.txt", 1)
Set Ftxt3 = Fso.CreateTextFile("c:\03.txt" )
Txt1 = Ftxt1.ReadAll
Txt2 = Ftxt2.ReadAll
With Ftxt3
.writeline Txt1 & txt2
end With


---------------
GaazzzzZZZZZZZZ
Reply

Marsh Posté le 21-03-2005 à 17:20:42    

De rien. j'en suis ravi.

Reply

Sujets relatifs:

Leave a Replay

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