Les Snippets

Connexion

Fusionner (merger) plusieurs fichiers en un seul

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 18/09/2007 13:23:50 et initié par PCPT [Liste]
Vue : 2619
Catégorie(s) : Fichier / Disque, Chaîne de caractères
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 18/09/2007
Posté par PCPT [Liste]
Function MergeFiles(bDestroy As BooleanByVal sDestFile As String, ParamArray aSrcFiles() As Variant) As Boolean
'   bDestroy permet de  choisir si on supprimer les fichiers sources
'    sDestFile sera le fichier final.
'       ** si il  est vide, le premier fichier du tableau sera le fichier de  réception
'   aSrcFiles() contient les chemins des  fichiers à merger.
'       ** le code accepte  d'avoir un tableau dans le premier fichier de  source
    MergeFiles = False
'   tableau vide?  bye
    If UBound(aSrcFiles) = -1 Then Exit Function
'   le  paramarray contient-il des chemins, ou un tableau de chemin en 1er  index?
    Dim aSrc() As String
    Dim As Integer
    i = VarType(aSrcFiles(0))
    
    If (i = vbArray + vbString) Or (i = vbArray + vbVariant)  Then ' tableau (8192) de  string (8) ou de variant (12)
'       tableau  dimentionné?
        i = -1
        On Error Resume Next
        i = UBound(aSrcFiles(0))
        On Error GoTo 0
        If i = -1 Then Exit Function
        
'       on construit le tableau de  destination
        ReDim aSrc(LBound(aSrcFiles(0)) To UBound(aSrcFiles(0)))
        For i = LBound(aSrcFiles(0)) To UBound(aSrcFiles(0))
            aSrc(i) = CStr(aSrcFiles(0)(i))
        Next i
    ElseIf (i = vbString) Or (i = vbVariant) Then 'string (8) ou variant (12)
        ReDim aSrc(LBound(aSrcFiles) To UBound(aSrcFiles))
        For i = LBound(aSrcFiles) To UBound(aSrcFiles)
            aSrc(i) = CStr(aSrcFiles(i))
        Next i
    Else 'autre type,  bye
        Exit Function
    End If

'   le tableau est  créé, un fichier de destination?
    If LenB(sDestFile) = Then sDestFile = aSrc(LBound(aSrc))
'   un seul fichier? source = destination? bye
    If (sDestFile = aSrc(LBound(aSrc))) And (LBound(aSrc) = UBound(aSrc)) Then Exit Function

'    création du buffer
    Dim sBuffer As String, FF As Integer, sFile As String
    sBuffer = vbNullString
    For i = LBound(aSrc) To UBound(aSrc)
        On Error Resume Next
            sFile = vbCrLf
            FF = FreeFile
            Open aSrc(i) For Input As #FF
                sFile = Input(LOF(FF), #FF)
            Close #FF
            If bDestroy Then Kill aSrc(i)
        On Error GoTo 0
        
        sBuffer = sBuffer & sFile
    Next i
'   enregistre le buffer
    FF = FreeFile
    Open sDestFile For Output As #FF
        Print #FF, sBuffer
    Close #FF
'   fin
    sBuffer = vbNullString
    sFile = vbNullString
    Erase aSrc
    MergeFiles = True
End Function
'
'
'    =====================
'   EXEMPLE  D'UTILISATION
'    =====================
'
'
Private Sub Exemple()
    Dim sFile1 As String
    Dim sFile2 As String
    Dim aFiles0() As String
    Dim aFiles1(To 1As String
    Dim aFiles2() As Variant
    
    sFile1 = "C:\Fichier1.txt"
    sFile2 = "C:\Fichier2.txt"
    aFiles1(0) = sFile1
    aFiles1(1) = sFile2
    aFiles2 = Array()

'   1  fichier
    Debug.Print MergeFiles(False"", sFile1)                   'FAUX
'   2 fichiers (paramarray  utilisé)
    Debug.Print MergeFiles(False"", sFile1, sFile2)           'VRAI
'   0 fichier (tableau  string pas initialisé, paramarray pas utilisé)
    Debug.Print MergeFiles(False"", aFiles0)                  'FAUX
    
'   2 fichiers  (tableau string, paramarray pas utilisé)
    Debug.Print MergeFiles(False"C:\Fichier3.txt", aFiles1)   'VRAI
'   0 fichier (tableau variant pas initialisé, paramarray pas  utilisé)
    Debug.Print MergeFiles(False"", aFiles2)                  'FAUX
    aFiles2 = Array(sFile1, sFile2)
'   2 fichiers (tableau variant, paramarray pas  utilisé)
    Debug.Print MergeFiles(False"", aFiles2)                  'VRAI
End Sub


Snippets en rapport avec : Fichiers, Fusionner, Merger, Plusieurs



Codes sources en rapport avec : Fichiers, Fusionner, Merger, Plusieurs

{Visual Basic, VB6, VB.NET, VB 2005} BOITE DE NAVIGATION À LA SAUCE MAC OS X
Cette boite de dialogue est simple, mais elle permet de naviguer à la manière des boites OS X, c'est...

{Visual Basic, VB6, VB.NET, VB 2005} ECRIRE OU LIRE UNE STRUCTURE DANS UN FICHIER BINAIRE
J'ai cherché un peu mais à ce qu'il me semble, si on souhaite enregistrer une structure dans un fich...

{Visual Basic, VB6, VB.NET, VB 2005} RÉCUPÉRATION/ÉCRITURE DES NOMS DE FICHIERS CONTENUS DANS LE PRESSE-PAPIER
VB permet de lire facilement certains contenus du presse-papier windows (texte, image ...), mais pou...

{PHP} COMPTER LE NOMBRE DE FICHIERS DANS UN DOSSIER
Après pas mal de recherche, je n'ai pas réellement trouvé un code qui me convenait. J'ai donc trouvé...

{Javascript / DHTML} LIRE UN FICHIER .TXT AVEC JAVASCRIPT + INSERTION DES APPLETS JAVA
j'ai trouve un code de Petole Team maiis c'est un tres bon code mais !!! l'ecriture des champs d...

{PHP} TÉLÉCHARGER PLUSIEURS FICHIERS EN 1 CLIC
Voila une petite astuce pour lancer le téléchargement de plusieurs fichiers à la fois. Ça tiens en ...

{Visual Basic, VB6, VB.NET, VB 2005} RECHERCHER FICHIERS
Comme avec Windows on recherche les fichiers. Mais j'ai fait l'expérience avec les fichiers images c...

{Visual Basic, VB6, VB.NET, VB 2005} RAPPEL POUR NE PAS OUBLIER D'ALER MANGER
utlise la manipulation de fichier, et du shell avec la commande bat, j'ai fais ça ya longtemps depui...

{Flash} PRELOAD D'IMAGES EXTERNES MUTIPLES
Voici un code pour le préchargement de plusieurs images externes dans le cache du navigateur. C'es...

{C / C++ / C++.NET} (LIB)CONFIGINIPARSER
Classe C++ pour lire, éditer, et sauver les fichiers de configuration de type .INI . bool...