Question 201

Comment concaténer 2 fichiers texte en VB ?

Visual Basic ne dispose pas d'une instruction ou fonction permettant de concaténer 2 fichiers texte. Pour réaliser cette opération, le plus simple est de lire les 2 fichiers source ligne par ligne et de copier ces lignes dans le fichier destination. A défaut d'être nécessairement la plus rapide, cette méthode à l'avantage de la simplicité de mise se oeuvre.

Public Function ConcatenateFile(ByVal srcFile1 As String, _
                                ByVal srcFile2 As String, _
                                ByVal destFile As String, _
                                ByRef errCode As Integer, _
                                ByRef errMsg As String) As Boolean
    Dim f As Integer
    Dim g As Integer
    Dim h As Integer
    Dim s As String
    
    On Error GoTo ConcatenateFile_ERR
    
    f = FreeFile: Open srcFile1 For Input As #f
    g = FreeFile: Open srcFile2 For Input As #g
    h = FreeFile: Open destFile For Output As #h
    
    ' read source file1, append to destination file
    While Not EOF(f)
        Line Input #f, s
        Print #h, s
    Wend
    ' read source file2, append to destination file
    While Not EOF(g)
        Line Input #g, s
        Print #h, s
    Wend
    
    ' Close all files
    Close
    ConcatenateFile = True
    
ConcatenateFile_END:
    Exit Function

ConcatenateFile_ERR:
    ConcatenateFile = False
    errCode = Err.Number
    errMsg = Err.Description
    Resume ConcatenateFile_END
End Function

Exemple d'utilisation de la fonction

    Dim ret         As Integer
    Dim errCode     As Integer
    Dim errMsg      As String

    ret = ConcatenateFile("c:\input1.txt", "c:\input2.txt", "c:\output.txt", errCode, errMsg)
    If ret Then
        MsgBox "Copie effectuée", vbInformation
    Else
        MsgBox "Erreur lors de la copie. ErrCode:" & errCode & " Description:" & errMsg, vbExclamation
    End If
    

Comme on l'a dit, cette méthode peut se révéler peu efficace pour la concaténation de très gros fichiers (plusieurs centaines de milliers de lignes), d'autres méthodes peuvent être plus efficaces, comme par exemple celle exposée dans l'article Comment lire rapidement un fichier texte ?.

Cas particulier : concaténation de A et B dans A (ajout de B à A)

Dans ce cas, en particulier si le fichier A est grand, il sera plus efficace d'ouvrir le fichier 'A' en mode "Append" et d'ajouter simplement les lignes du fichier 'B' au fichier 'A'. On pourra s'inspirer pour cela des exemples présentés dans l'article Comment modifier un fichier texte ?.

Pour aller plus loin

Voir aussi :

Date de publication : 11 septembre 2008
Dernière modification : 11 septembre 2008
Rubriques : Fichiers & dossiers
Mots-clés : concaténer, concaténation, copier, ajouter, ajout, fichiers, texte, input, output, open, print, input